ВУЗ:
Составители:
77
#define SQ(x) ((x)*(x))
Запись этого макроопределения , например, в виде
#define SQ(x) x * х
может привести к неверному результату. Пусть мы хотим использовать SQ
следующим образом:
s = SQ(a+b);
После выполнения макроподстановки получим
s = a+b*a+b;
и результат будет неверным. Скобки гарантируют сохранение приоритета
выполнения операций .
7.4. Директива #undef
Директива #undef ограничивает область действия директивы -
#define. Директива имеет следующий вид :
#undef идентификатор
где идентификатор — идентификатор, ранее определенный в
директиве #define.
Директива #undef используется:
1) для изменения условия в директиве #ifdef;
2) для исключения дублирования макроимен.
Последний случай может иметь место при включении файлов с
помощью директивы #include. Включаемый файл может содержать
макроопределения . При такой ситуации возможно дублирование имен.
Препроцессор будет руководствоваться первым встретившимся
макроопределением .
7.5. Условная компиляция
Условная компиляция — это выборочная компиляция только тех
частей программы, которые удовлетворяют некоторым условиям.
Например, могут быть компилированы только те части программы,
которые относятся к определенному окружению или к реализации
системно- зависимых функций в каждой операционной системе при
написании переносимых программ.
Условная компиляция имеет следующие преимущества:
77 #define SQ(x) ((x)*(x)) Запись этого макроопределения, например, в виде #define SQ(x) x * х может привести к неверному результату. Пусть мы хотим использовать SQ следующим образом: s = SQ(a+b); После выполнения макроподстановки получим s = a+b*a+b; и результат будет неверным. Скобки гарантируют сохранение приоритета выполнения операций. 7.4. Директива #undef Директива #undef ограничивает область действия директивы - #define. Директива имеет следующий вид: #undef идентификатор где идентификатор — идентификатор, ранее определенный в директиве #define. Директива #undef используется: 1) для изменения условия в директиве #ifdef; 2) для исключения дублирования макроимен. Последний случай может иметь место при включении файлов с помощью директивы #include. Включаемый файл может содержать макроопределения. При такой ситуации возможно дублирование имен. Препроцессор будет руководствоваться первым встретившимся макроопределением. 7.5. Условная компиляция Условная компиляция — это выборочная компиляция только тех частей программы, которые удовлетворяют некоторым условиям. Например, могут быть компилированы только те части программы, которые относятся к определенному окружению или к реализации системно-зависимых функций в каждой операционной системе при написании переносимых программ. Условная компиляция имеет следующие преимущества: