C++.Бархатный путь


Директива препроцессора define - часть 2


В ходе препроцессорной обработки вхождения идентификатора TEXT заменяются на строку замещения: 1234567890-= йцукенгшщзхъ\

Макроопределения define могут быть вложенными: #include <iostream.h> #define WHISKEY "ВИСКИ с содовой." #define MARTINI "МАРТИНИ со льдом и " WHISKEY void main() {cout << MARTINI;}

В результате выполнения последнего оператора выводится строка МАРТИНИ со льдом и ВИСКИ с содовой.

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

Так что макроопределение #define WHISKEY "стаканчик ВИСКИ " WHISKEY

обречено на неудачу.

В макроопределениях может встречаться несколько макроопределений с одной и той же замещаемой частью. При этом следует использовать в тексте программы директиву препроцессора #undef ИмяЗамещаемойЧасти

Эта инструкция прекращает действие препроцессора по замене соответствующего идентификатора. #define PI 3.14 + 0.00159 float pi1 = PI; #undef PI #define PI 3.14159 float pi2 = PI;

| |

 




- Начало -  - Назад -  - Вперед -