реклама на сайте
подробности

 
 
> Стиль программирования на Си, описание функции
sKWO
сообщение Mar 31 2008, 10:23
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Добрый день!
Столкнулся со следующей проблемой.
нашол код как сделать восемь таймеров написанный Alechin Jan.
Первое что кидается в глаза та это синтаксис мне непонятный.
Вот к примеру прототип функции остановки тай мера:
Код
void Stop_Timer(IN IDX timer);

ну и сама функция:
Код
/*--------------------------------------------------------------------------------------------*/
/* Процедура остановки таймера.                                                               */
/* Принимает:   номер таймера (0 - 7).                                                        */
/* Возвращает:  ничего не возвращает.                                                         */
/*--------------------------------------------------------------------------------------------*/
__monitor void Stop_Timer(IN IDX timer)
{
  Timer[timer].Timer_Ena = TIMER_DIS;
  return;
}

Непонятно что такое IDX? Ну IN понятно, направление, очень удобно.
IDX по ходу здесь беззнаковый чар.
Ну и соответственно вопрос:
Этот синтаксис возможен через какоето макроопределение?
Может кто знает, подскажите, уверен это интерессно не только мне.
Вот ещё пример
Код
void Start_Timer(IN IDX timer, IN WORD interval, IN pTIMER_FUNC pFunc = NULL, IN bool cycle = TIMER_ONCE);

Спасибо.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lem
сообщение Mar 31 2008, 20:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533



препроцессором не рекомендуется пользоваться именно из-за проблем с поиском ошибок (в основном), так как во что разворачивается макроопределение выяснить практически нереально (достоверно), отлаживаться и искать ошибки крайне неудобно. Поэтому были введены в язык средства, позволяющие практически полностью исключить использование препроцессора.
Список случаев, когда препроцессор оправдан уже был озвучен.

Правда, я лично использую его неправильно, надо отучаться...
Для маленьких проектов, например, для микроконтроллеров типа АВР, разницы никакой, но привычка переносится и на большие, а там проявляются все эти кажущиеся надуманными проблемы.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 1 2008, 12:40
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Lem @ Mar 31 2008, 22:08) *
как во что разворачивается макроопределение выяснить практически нереально (достоверно)

Как правило препроцессор идёт отдельным исполняемым файлом и/или у компилятора есть соответствующий ключик "выполнить только препроцессор".
И можно получить выход препроцессора и всё поразглядывать.



Да, очень много чего можно затолкать в enum-ы, inline-функции и т.п.
Да, в С++ есть ссылки, позволяющие уменьшить использование указателей и связанных с неправильным их применением ошибок (ударение на слове "неправильным", а не на слове "применением"). И т.д. и т.п.
Но, извините,
#define TRUE FALSE
и
#define SQR(x) x * x
это примеры вредительского и безграмотного применения макросов, а не их генетической ущербности.
Но на их базе строится рекомендация "использование макросов следует уменьшать в идеале до нуля", что, на мой взгляд, неправильно, как неправильны и рекомендации не использовать указатели (а почему тогда в стандарте оставили не только условную компиляцию, но и функциональные макросы, склейку и подстановку аргументов и оставили указатели?)

Так же как и с goto, который я использую редко и на форумах иногда сам привожу примеры, как можно обойтись без goto и при этом и сгенерированный код не растёт, и читаемость улучшается, но который я инода таки использую - так же и с макросами:
Используйте, не бездумно, голова дана именно для выбора нужного средства языка!
(Кстати, а какое средство языка можно использовать бездумно? Знаменитые примеры "индусского" кода написаны и без макросов, и без gotoи часто вообще на яве, изначально "лишённой недостатков С/С++")
Правильно и в нужном месте применённые макросы, на мой взгляд, только улучшают (не слишком хорошо формализуемый и очень вкусовой параметр) читаемость кода. Кончено, для людей, умеющих с ними обращаться (та же проблема с указателями).
Огрызок .h
Код
typedef WINAPI void (*DlPortWritePortUchar_t) (unsigned port, uint8_t d);
typedef WINAPI uint8_t (*DlPortReadPortUchar_t) (unsigned port);
typedef WINAPI void (*DlPortWritePortBufferUchar_t) (unsigned port, const uint8_t *pd, int len);

class lpt_dlportio_t : public lpt_io_t
{
public:
    lpt_dlportio_t(unsigned _base);
    ~lpt_dlportio_t();

    virtual uint8_t read(rd_offset offs);
    virtual void write(wr_offset offs, uint8_t d);
    virtual void write_data(const uint8_t *pd, int len);

private:
    HINSTANCE hdlportio;
#define _DL_PTR(_f_) _f_##_t _f_##_P
    _DL_PTR(DlPortWritePortUchar);
    _DL_PTR(DlPortReadPortUchar);
    _DL_PTR(DlPortWritePortBufferUchar);
#undef  _DL_PTR
}; // class lpt_dlportio_t


Огрызок .cpp
Код
lpt_dlportio_t::lpt_dlportio_t(unsigned _base)
    : lpt_io_t(_base), hdlportio(NULL)
{
    hdlportio = LoadLibrary("DLportIO.dll");
    if (hdlportio == NULL)
        throw error_win32_t(E_INVHARD, "Can't load port access library `DLportIO.dll'");

#define _DL_LOAD(_f_)\
        do {\
            _f_##_P = (_f_##_t)GetProcAddress(hdlportio, #_f_);\
            if(_f_##_P == NULL)\
                throw error_win32_t(E_INVHARD, "Can't load port access library `DLportIO.dll'"); \
        } while(0)

    _DL_LOAD(DlPortWritePortUchar);
    _DL_LOAD(DlPortReadPortUchar);
    _DL_LOAD(DlPortWritePortBufferUchar);
#undef _DL_LOAD

} // lpt_dlportio_t::lpt_dlportio_t


И не говорите мне, что этот текст надо переписать без макросов для облегчения чтения и сопровождения (представим себе, что понадобилось добавить ещё одну функцию из dlportio.dll и/или изменить обработку ошибки - в каком случае надо больше до-/пере-писывать руками и где при этом больше шансов ошибиться в одной из ветвей - в варианте с макросами или с прямым текстом?

И ещё пример на эту тему

http://www.telesys.ru/wwwboards/mcontrol/1...es/314290.shtml


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 1 2008, 13:50
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(ReAl @ Apr 1 2008, 19:40) *
Как правило препроцессор идёт отдельным исполняемым файлом и/или у компилятора есть соответствующий ключик "выполнить только препроцессор".

Это где такое правило? В GCC? Рад за него. В IAR с некоторых пор появился ключик. А вот в используемом мной сейчас VDSP такого удовольствия нет (не нашел). Т.ч. тут как повезет.

Цитата(ReAl @ Apr 1 2008, 19:40) *
Да, очень много чего можно затолкать в enum-ы, inline-функции и т.п.

Именно! smile.gif И все, что можно туда затолкать, не надо пихать в макросы. Об этом и спич.

Цитата(ReAl @ Apr 1 2008, 19:40) *
Но, извините,
#define TRUE FALSE

Да это я вообще в качестве хохмы привел, не апеллируя к этому примеру, как к аргументу. Просто этот пример наглядно демонстрирует мощь препроцессора как дестуктивного средства, только и всего.

Цитата(ReAl @ Apr 1 2008, 19:40) *
это примеры вредительского и безграмотного применения макросов, а не их генетической ущербности.

Как насчет вышеприведенного примера про

Код
#define I 7
#define N 2
#define C 0

?

А ведь это не лохи какие-то делали, а вполне серьезная и уважаемая фирма IAR Systems, которая выпускает очень достойные продукты. Замечательные грабли. Замечательный пример той же самой деструктивной мощи. Да, препроцессор обладает известной гибкостью в силу своих свойств по текстовой подстановке, но это палка о двух концах. Не стоит злоупотрелять ею.

Имхо, "генетическая ущербность" препроцессора в том, что он делает свою работу тупо, без анализа, не обращая внимания на простнаства имен и прочий контекст, о чем уже в этой же ветке было не раз говорено.

Цитата(ReAl @ Apr 1 2008, 19:40) *
Но на их базе строится рекомендация "использование макросов следует уменьшать в идеале до нуля",

Да. Но идеал недостижим. Поэтому препроцессор останется.

Цитата(ReAl @ Apr 1 2008, 19:40) *
(а почему тогда в стандарте оставили не только условную компиляцию,

Потому, что для нее нет адекватной замены.

Цитата(ReAl @ Apr 1 2008, 19:40) *
но и функциональные макросы, склейку и подстановку аргументов

Совместимость и преемственность. Попробуй убери что-нить из этого - миллионы строк кода уже написанного, отлаженного и работающего кода сразу перестанут компилироваться.

Цитата(ReAl @ Apr 1 2008, 19:40) *
и оставили указатели?)

Указатели из другой оперы, не надо все в кучу валить. Еще спроси (ехидно так), зачем оставили ассемблер - там тоже можно при невнимательном обращении наворотить. smile.gif


Цитата(ReAl @ Apr 1 2008, 19:40) *
Так же как и с goto, который я использую редко

Реально есть одна ситуация, где без него геморно - выход из вложенного цикла. Вроде все, больше не знаю (навскидку). Из-за этого оный оператор и оставили в языке.

Цитата(ReAl @ Apr 1 2008, 19:40) *
так же и с макросами:
Используйте, не бездумно, голова дана именно для выбора нужного средства языка!

Осталось найти, как добраться до головы иаровских разрабов, соорудивших макросы, приведенные выше. smile.gif Если есть возможность разложить грабли - они будут разложены. Раньше или позже, чаще или реже. Желательно, чтобы это было реже. Для этого использование препроцессора надо свести к минимуму, о чем только и речь. Никто не призывает отказаться от него вообще - это, повторяю, нереально. Чего в крайности кидаться.

Цитата(ReAl @ Apr 1 2008, 19:40) *
(Кстати, а какое средство языка можно использовать бездумно? Знаменитые примеры "индусского" кода написаны и без макросов, и без gotoи часто вообще на яве, изначально "лишённой недостатков С/С++")

Коренное отличие многих среств языка от средств препроцессора в том, что с ними код читается без подводных граблей. Сразу видно, как используется средство, сразу понятно, что тут можно ожидать. А вот с препроцессором оно несколько не так.

Цитата(ReAl @ Apr 1 2008, 19:40) *
И не говорите мне, что этот текст надо переписать без макросов для облегчения чтения и сопровождения (представим себе, что понадобилось добавить ещё одну функцию из dlportio.dll и/или изменить обработку ошибки - в каком случае надо больше до-/пере-писывать руками и где при этом больше шансов ошибиться в одной из ветвей - в варианте с макросами или с прямым текстом?

Это большой вопрос, как лучше, пример не убеждает. Насчет руками - про рефакторинг слышал? Кроме того, тут пример очень осторожного использования - определение макроса лежит прямо тут же, все перед глазами. Но не дай бог кто-нить вздумает использовать такое же имя _DL_PTR в своей программе. Будет удивлен. smile.gif Т.ч. тут тоже есть, что обсудить.

Цитата(ReAl @ Apr 1 2008, 20:40) *
Ну в такой формулировке - с указанием где именно и без абсолютной категоричности - можно согласиться :-)
Но ведь обычно идёт разговор "запретить и всё тут, так как это источник ошибок".

Это где это сказано, что "запретить" и все тут? Сказано было, свести к минимуму.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 1 2008, 20:44
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dxp @ Apr 1 2008, 16:50) *
А вот в используемом мной сейчас VDSP такого удовольствия нет (не нашел). Т.ч. тут как повезет.

Самостоятельные препроцессоры "C" не редкость, да и тем-же GCC прогнать можно... Посему на везение уповать совсем незачем smile.gif.


Цитата(ReAl @ Apr 1 2008, 17:51) *
А какого лешего компилировать С-код С++-компилятором?

А почему-бы и нет? Есть свои приятственные фичи в C++ компиляторах и для почти сишного кода. А как, например в смешанном коде без немерянных извращений работать с плюсовым кодом?
Лично я в большинстве случаев так и поступаю.


Цитата(ReAl @ Apr 1 2008, 16:40) *
Но ведь никто не рекомендует отказаться от них и начать писать p = p + 1; Или уже рекомендуют? wink.gif

Рекомендуют smile.gif С полгода назад на форуме проскаивала ссылка на переводную статью по "правильному стилю" именно с такой рекомендацией. У многих сей опус вызвал одобрение smile.gif. Я естественно, не мог смолчать - возражал...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 2 2008, 11:55
Сообщение #6


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(zltigo @ Apr 1 2008, 22:44) *
Самостоятельные препроцессоры "C" не редкость, да и тем-же GCC прогнать можно... Посему на везение уповать совсем незачем smile.gif.
Тут можно спорить о возможном несовпадении (один из них или оба могут не польностью соответствовать стандрату и проверка одним другого будет неадекватной). Но в целом он чаще есть, чем его нет. Я их даже эпизодически прикручивал для своих нужд (например, в pldasm какие-то кусочки пихал для облегчения написания).

Цитата(zltigo @ Apr 1 2008, 22:44) *
А почему-бы и нет? Есть свои приятственные фичи в C++ компиляторах и для почти сишного кода. А как, например в смешанном коде без немерянных извращений работать с плюсовым кодом?
Лично я в большинстве случаев так и поступаю.

Это если говорить о сложившейся ситуации. И я тоже так делаю иногда, хотя и inline-функции, и объявление переменных по месту, включая счётчики в циклах for - есть в C99, просто до сих пор не все поддерживают. Да и в С99 есть не менее вкусная возможность инициализировать элементы структур/массивов по имени, в С++ этого нет. Так что... Где найдёшь, где потеряешь...

А если говорить на момент "до того", когда язык С++ только сбивался и ещё и люди не привыкли пользоваться "С-совместимыми" расширениями С++, и "массы текстов" не набралось, то кто мешал "таки повыкидывать из С++ тяжкое наследие С, не приносящее ничего, кроме вреда"?
По поводу смешанных проектов - никто не мешает весь С-текст держать в отдельных файлах, компилировать в С-режиме со всеми функциональными макросами, а потом линковать с С++ - программой, скомпилированной в С++ режиме.
Ввели бы для условной компиляции что-то как-бы похожее, но интегрированное в язык, а не являющееся отдельным проходом. Как результат в условии компиляции можно было бы применять и enum-определённые константы и т.п. Кто мешал? И не было бы споров smile.gif Ну скучал бы я по старым добрым макросам smile.gif


Цитата(_Pasha @ Apr 2 2008, 08:58) *
А насчет пред/пост инкремента, например, действительно генератор граблей.
Где? Как?
Может, генератором граблей есть голова пишущего, не разобравшаяся в побочных эффектах и точках следования?
Если так, то надо требовать изменения консти стандарта С таким образом, чтобы все переменные по умолчанию были volatile, так как от непонимания этого момента "глюков" ещё больше.
Ну или просто компилировать свои программы с выключенной оптимизацией.


Цитата(defunct @ Apr 2 2008, 11:58) *
а повсеместно тыкать ++ / -- ни ни, я отдаю предпочтение p += 1 вместо ++;
lol.gif
Шаманим потихоньку?

Стандарт С:
Цитата
6.5.3.1 Prefix increment and decrement operators
...
Semantics
2 The value of the operand of the prefix ++ operator is incremented. The result is the new value of the operand after incrementation. The expression ++E is equivalent to (E+=1). See the discussions of additive operators and compound assignment for information on constraints, types, side effects, and conversions and the effects of operations on pointers.
3 The prefix -- operator is analogous to the prefix ++ operator, except that the value of the operand is decremented.

Цитата
6.5.16.2 Compound assignment
Semantics
3 A compound assignment of the form E1 op= E2 differs from the simple assignment expression E1 = E1 op (E2) only in that the lvalue E1 is evaluated only once.


++E эквивалентно E+=1 всегда
любое из них эквивалентно E = E + 1 в подавляющем большинстве случаев.
Разница будет, например, для a[i] += 1; в случае, когда i объявлено как volatile, иначе выражения семантически эквивалентны.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 2 2008, 12:15
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ReAl @ Apr 2 2008, 13:55) *
lol.gif
Шаманим потихоньку?
++E эквивалентно E+=1 всегда

Это я в курсе smile.gif
Дело принципа и привычки, от ++ в глазах рябит. Как и написал выше ++/-- использую только для индексации и в условиях:

while( zz--)
{
*p++ = xx;
p[ idx++] = xx;
}
...

а когда стоит вопрос одинокого инкремента какой-то переменной или указателя то пользую

p += 1;
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 2 2008, 12:40
Сообщение #8


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(defunct @ Apr 2 2008, 14:15) *
Это я в курсе smile.gif
Дело принципа и привычки, от ++ в глазах рябит.
Фух, а то я уж, виноват, подумал, что это способ уменьшения размера глюкодрома по причине врождённой глюкавости операторов ++ --.
Привычки - это нормально, ненормально когда их оправдывают высокими соображениями smile.gif


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sKWO   Стиль программирования на Си   Mar 31 2008, 10:23
- - Axxel   Цитата(sKWO @ Mar 31 2008, 16:23) Этот си...   Mar 31 2008, 10:36
|- - aaarrr   Стиль жуткий, не надо так делать. Цитата(Axxel ...   Mar 31 2008, 10:40
- - defunct   ЦитатаЭтот синтаксис возможен через какоето макроо...   Mar 31 2008, 10:59
|- - sKWO   Цитата(defunct @ Mar 31 2008, 14:59) да, ...   Mar 31 2008, 11:56
|- - dxp   Цитата(sKWO @ Mar 31 2008, 18:56) Да, тог...   Mar 31 2008, 12:16
|- - defunct   Цитата(sKWO @ Mar 31 2008, 13:56) Чёта му...   Mar 31 2008, 14:17
|- - Axxel   Цитата(sKWO @ Mar 31 2008, 17:56) ПОКАЖИ ...   Apr 1 2008, 04:30
- - sensor_ua   ЦитатаВо всех случаях, где можно выбирать, предпоч...   Mar 31 2008, 12:48
|- - rezident   Извиняюсь, что вклиниваюсь. Цитата(sensor_ua ...   Mar 31 2008, 14:13
|- - dxp   Цитата(sensor_ua @ Mar 31 2008, 19:48) Пр...   Apr 1 2008, 03:41
- - Alechin   Так как кусок кода мой - скажу как это описано у м...   Mar 31 2008, 14:08
- - sensor_ua   ЦитатаДля переносимости кода.... IMNHO, совсем неу...   Mar 31 2008, 14:39
|- - rezident   Цитата(sensor_ua @ Mar 31 2008, 20:39) IM...   Mar 31 2008, 14:51
- - vshemm   Есть замечательная книга Алена Голуба "Правил...   Mar 31 2008, 15:08
- - sensor_ua   ЦитатаУже были и неоднократно пояснения почему typ...   Mar 31 2008, 15:23
|- - sKWO   Спасибо, Ребята! Дисскусия разворачивается хор...   Mar 31 2008, 16:51
- - sensor_ua   Попробуй таки найти текстовым поиском "#defin...   Mar 31 2008, 17:10
|- - rezident   Цитата(sensor_ua @ Mar 31 2008, 23:10) По...   Mar 31 2008, 17:12
- - sensor_ua   ЦитатаА вот на такое безобразие препроцессор сруга...   Mar 31 2008, 17:26
|- - rezident   Цитата(sensor_ua @ Mar 31 2008, 23:26) А ...   Mar 31 2008, 18:49
- - sensor_ua   Гы Мне код перебивать не нужно. Мне как раз единож...   Mar 31 2008, 19:07
|- - Сергей Борщ   Цитата(dxp @ Apr 1 2008, 16:50) Осталось ...   Apr 1 2008, 14:43
|- - ReAl   Цитата(dxp @ Apr 1 2008, 15:50) Это где т...   Apr 1 2008, 14:51
|- - SasaVitebsk   Цитата(zltigo @ Apr 2 2008, 00:44) Рекоме...   Apr 1 2008, 22:17
||- - _Pasha   Цитата(SasaVitebsk @ Apr 2 2008, 01:17) П...   Apr 2 2008, 06:58
||- - defunct   Цитата(ReAl @ Apr 2 2008, 14:40) Фух, а т...   Apr 2 2008, 12:43
||- - _Pasha   Цитата(ReAl @ Apr 2 2008, 15:40) ...спосо...   Apr 2 2008, 18:53
|- - zltigo   Цитата(ReAl @ Apr 2 2008, 14:55) По повод...   Apr 2 2008, 15:01
|- - sKWO   Позволю небольшой отрывок кода, извиняюсь что немн...   Apr 2 2008, 16:40
- - sensor_ua   Цитатапрепроцессором не рекомендуется пользоваться...   Mar 31 2008, 20:29
- - _Pasha   Цитата(vshemm @ Mar 31 2008, 19:08) Так т...   Mar 31 2008, 22:07
- - sensor_ua   ЦитатаУже неоднократно на эту тему проходились, по...   Apr 1 2008, 05:53
|- - Dog Pawlowa   Цитата(sensor_ua @ Apr 1 2008, 08:53) Про...   Apr 1 2008, 06:30
|- - dxp   Цитата(sensor_ua @ Apr 1 2008, 12:53) А в...   Apr 1 2008, 07:01
- - _Pasha   Пример winavr Кодeeprom_read_block(&my_var...   Apr 1 2008, 06:16
- - _Pasha   Цитата(sensor_ua @ Apr 1 2008, 09:53) К с...   Apr 1 2008, 06:33
- - sensor_ua   ЦитатаНо это, повторяю, другое Дальше бессмысленно...   Apr 1 2008, 08:17
|- - dxp   Цитата(sensor_ua @ Apr 1 2008, 15:17) Дал...   Apr 1 2008, 09:28
- - SasaVitebsk   Очень интересная дискуссия развернулась. Но, в общ...   Apr 1 2008, 12:48
|- - dxp   Цитата(SasaVitebsk @ Apr 1 2008, 19:48) Н...   Apr 1 2008, 13:11
||- - ReAl   Цитата(dxp @ Apr 1 2008, 15:11) Во всяком...   Apr 1 2008, 13:40
||- - defunct   Цитата(ReAl @ Apr 1 2008, 15:40) Но ведь ...   Apr 2 2008, 09:58
||- - andrew_b   Цитата(defunct @ Apr 2 2008, 12:58) Delph...   Apr 2 2008, 10:15
||- - Сергей Борщ   Цитата(defunct @ Apr 2 2008, 12:58) Прост...   Apr 2 2008, 12:34
||- - defunct   Цитата(Сергей Борщ @ Apr 2 2008, 14:34) Н...   Apr 2 2008, 12:39
|- - Сергей Борщ   Цитата(SasaVitebsk @ Apr 1 2008, 15:48) К...   Apr 1 2008, 13:15
- - Lem   одним из авторитетов для меня является Герб Саттер...   Apr 1 2008, 13:07
- - sensor_ua   ЦитатаНе следует путать приятное с полезным... Не ...   Apr 1 2008, 13:37
- - SasaVitebsk   Вот об этом я и говорю - богатство выбора в рамках...   Apr 2 2008, 18:34
|- - singlskv   Цитата(SasaVitebsk @ Apr 2 2008, 22:34) С...   Apr 2 2008, 19:19
|- - zltigo   Цитата(SasaVitebsk @ Apr 2 2008, 21:34) ....   Apr 2 2008, 19:30
|- - singlskv   Цитата(zltigo @ Apr 2 2008, 23:30) Вы зна...   Apr 2 2008, 20:31
||- - zltigo   Цитата(singlskv @ Apr 2 2008, 23:31) Да п...   Apr 2 2008, 21:51
||- - singlskv   Цитата(zltigo @ Apr 3 2008, 01:47) Налицо...   Apr 2 2008, 21:55
||- - zltigo   Цитата(singlskv @ Apr 3 2008, 00:55) пока...   Apr 2 2008, 22:08
|||- - singlskv   Цитата(zltigo @ Apr 3 2008, 02:08) и убра...   Apr 2 2008, 22:37
|||- - ReAl   Цитата(singlskv @ Apr 3 2008, 00:37) Я же...   Apr 2 2008, 22:46
||||- - singlskv   Цитата(ReAl @ Apr 3 2008, 02:32) Кстати, ...   Apr 2 2008, 23:25
||||- - ReAl   Цитата(singlskv @ Apr 3 2008, 00:55) Так ...   Apr 2 2008, 23:45
||||- - defunct   Цитата(ReAl @ Apr 3 2008, 01:45) Кстати, ...   Apr 3 2008, 10:22
|||- - zltigo   Цитата(singlskv @ Apr 3 2008, 01:37) это ...   Apr 3 2008, 05:53
||- - ReAl   Цитата(singlskv @ Apr 2 2008, 23:55) с ОД...   Apr 2 2008, 22:32
|- - sKWO   Цитата(zltigo @ Apr 2 2008, 22:30) Компил...   Apr 7 2008, 10:40
|- - ReAl   Цитата(sKWO @ Apr 7 2008, 13:40) К пример...   Apr 7 2008, 19:43
|- - sKWO   Цитата(ReAl @ Apr 7 2008, 22:43) Называет...   Apr 8 2008, 11:00
- - SasaVitebsk   Хотя я в NASA не работал, но по слухам там не прим...   Apr 2 2008, 19:53
- - AlexKLm   На СИ, правильно когда по-больше зелени (#define),...   Apr 2 2008, 21:22
- - SasaVitebsk   Вот я и говорю, что результат практически тот же п...   Apr 3 2008, 07:23
|- - ReAl   Цитата(SasaVitebsk @ Apr 3 2008, 09:23) В...   Apr 3 2008, 08:28
- - _Pasha   Кто о чем, а вшивый - о бане... Пробегала книжка ...   Apr 3 2008, 12:57
- - sensor_ua   Цитатасредствами ИАР это дело обстоит намного прощ...   Apr 7 2008, 10:58
|- - sKWO   Цитата(sensor_ua @ Apr 7 2008, 13:58) А к...   Apr 7 2008, 11:07
- - sensor_ua   Не очень понял, что Вы хотите, но на телесистемах ...   Apr 7 2008, 12:51
- - sKWO   спасибо за инфу!!   Apr 7 2008, 17:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01571 секунд с 7
ELECTRONIX ©2004-2016