Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.20;
Скачать: CL | DM;

Вниз

Вопрос по препроцессору С   Найти похожие ветки 

 
DVM ©   (2009-07-20 23:56) [0]

В последнее время читая исходники на Си уже несколько раз натыкался у разных авторов исходников на  записи следующего вида:

...
#if 0
...
#endif
...

Что это? Это такой извращенческий способ закомментировать часть кода?


 
Jukadze   (2009-07-21 00:06) [1]

Однажды ночью Токусан пришел к Рютану за наставлениями. Когда он получил их, Рютан сказал: — Уже поздно. Тебе пора идти.
Токусан поклонился, поднял штору и вышел. Увидев, что на улице темно, он вернулся со словами:
— Там уже темно.
Рютан зажег фонарь и протянул его Токусану. Когда тот протянул руку, чтобы взять фонарь, Рютан задул свечу. Токусан достиг просветления, поклонился и вышел.


 
Дмитрий С ©   (2009-07-21 06:36) [2]

ИМХО разница в том, что, грубо говоря, обычный комментарий "серенький", а код, закоментированный вышеуказанным способом, будет подсвечен по правилам синтаксиса в среде разработке.


 
palva ©   (2009-07-21 08:14) [3]

Такая мысль пришла:
Если какой-то участок кода постоянно приходится то включать, то отключать, то можно делать это меняя всего один символ.


 
жж   (2009-07-21 08:26) [4]

Поясните
а препроцессор Си  как-либо принципиально отличается от делфийского?


 
Anatoly Podgoretsky ©   (2009-07-21 08:39) [5]

> жж  (21.07.2009 08:26:04)  [4]

Конечно различается, у Дельфи нет препроцессора.


 
brother ©   (2009-07-21 09:40) [6]

> Если какой-то участок кода постоянно приходится то включать,
> то отключать, то можно делать это меняя всего один символ.

а если проще? : {DEFINE DEBUG} например. ё?)


 
brother ©   (2009-07-21 09:42) [7]

те $DEFINE конечно)


 
brother ©   (2009-07-21 09:46) [8]

> а препроцессор Си  как-либо принципиально отличается от
> делфийского?

процессор = компилятор?


 
palva ©   (2009-07-21 09:54) [9]


> а если проще?

В каких-то случаях проще. Если участков очень много и они разбросаны по проекту, то одновременное их включение/выключение, конечно, проще обеспечить при помощи #define. Правда здесь приходится править не один символ. А вот если у меня есть три варианта вычисления одного и того же, и я еще не решил, какой их них лучше, да еще пытаюсь их оптимизировать и тестировать на скорость, то проще их расположить рядом в одном модуле и включать один из них простым перебросом нуля в единицу.


 
palva ©   (2009-07-21 10:01) [10]


> процессор = компилятор?

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


 
test ©   (2009-07-21 10:05) [11]

жж   (21.07.09 08:26) [4]

m4 + wiki

Керниган и сотоварищи, его придумали немного позже чем Вирт написал Pascal.


 
palva ©   (2009-07-21 10:09) [12]


> позже чем Вирт написал Pascal.

Только в паскале Вирта не было препроцессора.


 
test ©   (2009-07-21 10:14) [13]

palva ©   (21.07.09 10:09) [12]
m4 придумали Керниган и сотоварищи, на нем как раз и держиться препроцессор.


 
Sergey   (2009-07-21 15:38) [14]

Если отключаемый код внутри себя содержит много комментариев, такой способ наиболее удобен. От вложенных комментариев, препроцессорам плохо бывает.


 
test ©   (2009-07-21 16:00) [15]

Sergey   (21.07.09 15:38) [14]
Это как? Компилятор игнорит коментарий, в машинный код уходит код без коментов, а как сильно вложенными комментами ранить тонкую душевную гармонию процессора?


 
Palladin ©   (2009-07-21 16:05) [16]


> [15] test ©   (21.07.09 16:00)

какого еще процессора?


 
test ©   (2009-07-21 16:14) [17]

Palladin ©   (21.07.09 16:05) [16]
Прочитал препроцессор как процессор, удивился, переспросил.


 
Игорь Шевченко ©   (2009-07-21 16:20) [18]


> От вложенных комментариев, препроцессорам плохо бывает


так рождаются мифы


 
pasha_golub ©   (2009-07-21 16:48) [19]

Это просто альтернатива комментариям, как (* *) в паскале­. Tока сохраняется раскраска синтаксиса :)))

Эт мне так друг-сишник сказал



Страницы: 1 вся ветка

Текущий архив: 2009.09.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
2-1247757748
antonn
2009-07-16 19:22
2009.09.20
как глянуть строку с AV в DLL? :)


2-1248162543
lewka
2009-07-21 11:49
2009.09.20
нажатие на ссылку в TWebbrowser


8-1197293016
Klim
2007-12-10 16:23
2009.09.20
Работа с PNG


15-1248160976
4got10
2009-07-21 11:22
2009.09.20
Не пашет клава%)


2-1247217291
Tneduts
2009-07-10 13:14
2009.09.20
Поле типа DATE при экспорте в ДБФ