на предмет наличия в них макровызова, они заменяются на 1L или 0L в зависимости от того, был или не был определен препроцессором указанный в них идентификатор. Все идентификаторы, оставшиеся после макрорасширения, заменяются на 0L. Наконец, предполагается, что любая целая константа всегда имеет суффикс L, т. е. вся арифметика имеет дело с операндами только типа
Константное выражение (A7.19) здесь используется с ограничениями: оно должно быть целочисленным, не может содержать в себе перечислимых констант, преобразований типа и операторов
Управляющие строки
#ifdef
#ifndef
эквивалентны соответственно строкам
#if defined
#if !defined
Строки
A12.6. Нумерация строк
Для удобства работы с другими препроцессорами, генерирующими Си-программы, можно использовать одну из следующих директив:
#line
#line
Эти директивы предписывают компилятору считать, что указанные десятичное целое и идентификатор являются номером следующей строки и именем текущего файла соответственно. Если имя файла отсутствует, то ранее запомненное имя не изменяется. Расширения макровызовов в директиве
A12.7. Генерация сообщения об ошибке
Строка препроцессора вида
#error
приказывает ему выдать диагностическое сообщение, включающее заданную последовательность лексем.
A12.8. Прагма
Управляющая строка вида
#pragma
призывает препроцессор выполнить зависящие от реализации действия. Неопознанная прагма игнорируется.
A12.9. Пустая директива
Строка препроцессора вида
#
не вызывает никаких действий.
A12.10. Заранее определенные имена
Препроцессор "понимает" несколько заранее определенных идентификаторов; их он заменяет специальной информацией. Эти идентификаторы (и оператор препроцессора
__LINE__ Номер текущей строки исходного текста, десятичная константа.
__FILE__ Имя компилируемого файла, строка.
__DATE__ Дата компиляции в виде "MMM DD YYYY",строка.
__TIME__ Время компиляции в виде "hh:mm:ss", строка.
__STDC__ Константа 1. Предполагается, что этот идентификатор определен как 1
только в тех реализациях, которые следуют стандарту.
Строки
A13. Грамматика
Ниже приведены грамматические правила, которые мы уже рассматривали в данном приложении. Они имеют то же содержание, но даны в ином порядке.
Здесь не приводятся определения следующих символов-терминов: