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

 
 
> Стиль программирования на Си, описание функции
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
ReAl
сообщение Apr 1 2008, 14:51
Сообщение #5


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

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



Цитата(dxp @ Apr 1 2008, 15:50) *
Это где такое правило? В GCC? Рад за него.
Во-первых, "как правило" != "существует правило", во вторых, из правил есть исключения.
Необходимость выдавать ассемблерный листинг тоже нигде не прописана, но как правило эта возможность имеется.
На моей памяти большинство компиляторов позволяли просмотреть выдачу препроцессора.

Цитата(dxp @ Apr 1 2008, 15:50) *
Как насчет вышеприведенного примера про
Код
#define I 7
#define N 2
#define C 0

Ну что я скажу... У gcc в этом месте SREG_I, SREG_N и так далее.
Солидная фирма, не солидная - а бывает и на старушку прорушка.


Цитата(dxp @ Apr 1 2008, 15:50) *
Потому, что для нее нет адекватной замены.
Я спросил не "почему условную компиляцют оставили", а "почему вместе с ней оставили функциональные макросы, склейку, ..."

Цитата(dxp @ Apr 1 2008, 15:50) *
Совместимость и преемственность. Попробуй убери что-нить из этого - миллионы строк кода уже написанного, отлаженного и работающего кода сразу перестанут компилироваться.
Какого кода??? С++ ?
А какого лешего компилировать С-код С++-компилятором?
Или тогда решили, что всё, С-компиляторы больше никто не будет писать и даже развивать, и поэтому для сопровождения С-кода надо в С++ оставить явно вредные вещи? Могли бы в С++ режиме и устранить "огромный недостаток". Тем более, что в мелких, неочевидных и местами обидных случаях С++ таки сильно отличается от С (например, литерал 'я' в языке С имеет тип int а в С++ имеет тип char).


Цитата(dxp @ Apr 1 2008, 15:50) *
Указатели из другой оперы, не надо все в кучу валить. Еще спроси (ехидно так), зачем оставили ассемблер - там тоже можно при невнимательном обращении наворотить. smile.gif
А где ассемблер в стандарте языков С/С++ ??? laughing.gif


Цитата(dxp @ Apr 1 2008, 15:50) *
Для этого использование препроцессора надо свести к минимуму, о чем только и речь. Никто не призывает отказаться от него вообще - это, повторяю, нереально. Чего в крайности кидаться.
Коренное отличие многих среств языка от средств препроцессора в том, что с ними код читается без подводных граблей. Сразу видно, как используется средство, сразу понятно, что тут можно ожидать. А вот с препроцессором оно несколько не так.
Так в том-то и дело, что агитаторы за предельную минимизацию применения указателей а то иногда и тернарной операции говорят то же самое - "неочевидно, непонятно, в отличие от массивов, ссылок и if/else". И часто при этом столь же категоричны, как и в случае с goto - "не должно быть вообще", "по нашему стандарту предприятия goto запрещены". Так что кидаюсь в крайности не я.


Цитата(dxp @ Apr 1 2008, 15:50) *
Это большой вопрос, как лучше, пример не убеждает. Насчет руками - про рефакторинг слышал?
Это как - я добавляю в описание класса поле, а в конструкторе сразу по кнопочке "сделайте мне красвиво" сгенерируется для него
Код
нужное_имя = (нужный_тип)GetProcAddress(hdlportio, нужная_строка);
            if(нужное_имя == NULL)
                throw error_win32_t(E_INVHARD, "Can't load port access library `DLportIO.dll'");
Или всё же придётся ручками это делать?


Цитата(dxp @ Apr 1 2008, 15:50) *
Кроме того, тут пример очень осторожного использования - определение макроса лежит прямо тут же, все перед глазами. Но не дай бог кто-нить вздумает использовать такое же имя _DL_PTR в своей программе. Будет удивлен. smile.gif Т.ч. тут тоже есть, что обсудить.
Получит предупреждение о переопределении и сразу увидит что и где конфликтует.
Если код пишет так, что предупреждения валят десятками на каждый файл и поэтому отключил без разбору все предупреждения - то не помогут никакие ограничения - наксоячит.

Цитата(dxp @ Apr 1 2008, 15:50) *
Это где это сказано, что "запретить" и все тут? Сказано было, свести к минимуму.
Ну, ты не самый бескомпромиссный борец с препроцессором :-) И то считаешь, что "в идеале исключить вообще".
Я же считаю, что "в идеале" его может и неплохо бы заменить чем-то более грамотным, но оно почти наверняка будет более сложным и менее удобным (эти два фактора могут не уменьшить глюкодромистость, а увеличить), поэтому пусть лучше остаётся как есть и как с любым инструментом - его нужно знать, чтобы пользоваться правильно. А для этого нужно пользоваться. А чтобы было меньше отрезанных пальцев - не убирать с кухни ножи, а учиться ими пользоваться тогда, кода это надо и не махать ими, показывая, как летали листья. Но не говорить, что есть открывашки, консервные ножи и хлеб можно купить уже нарезанным, поэтому применение ножей
Цитата(dxp @ Mar 31 2008, 14:16) *
нужно свести к минимуму, в идеале исключить вообще. Но на практике это не удается сделать, поэтому приходится жить с ним. По большому счету ... имеет смысл использовать только
в затупленном виде для простеньких вещей типа намазывания масла.
Просто нужно учить тому, что каждый инструмент нужно использовать с умом. А не рекомендовать "минимизировать до отсутствия", так как пока научитесь - можете пораниться. А уж сколько людей ими убито... rolleyes.gif


Цитата(Сергей Борщ @ Apr 1 2008, 16:43) *
Кстати, эти же грабельки перекочевали и в заголовочники avr-libc.
Разве? Там ведь в common.h сидят SREG_*
Хотя, мне кажется, желание "облегчить переход с IAR" у них инода избыточное, могли и добавить односимвольные.


--------------------
Ну, я пошёл… Если что – звоните…
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
|- - zltigo   Цитата(dxp @ Apr 1 2008, 16:50) А вот в и...   Apr 1 2008, 20:44
|- - SasaVitebsk   Цитата(zltigo @ Apr 2 2008, 00:44) Рекоме...   Apr 1 2008, 22:17
||- - _Pasha   Цитата(SasaVitebsk @ Apr 2 2008, 01:17) П...   Apr 2 2008, 06:58
|- - ReAl   Цитата(zltigo @ Apr 1 2008, 22:44) Самост...   Apr 2 2008, 11:55
|- - defunct   Цитата(ReAl @ Apr 2 2008, 13:55) Шаманим...   Apr 2 2008, 12:15
||- - ReAl   Цитата(defunct @ Apr 2 2008, 14:15) Это я...   Apr 2 2008, 12:40
||- - 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 Текстовая версия Сейчас: 23rd July 2025 - 22:52
Рейтинг@Mail.ru


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