Страустрап Бьярн
Шрифт:
Кроме того, считается определенным при трансляции программы на C++ макроимя __cplusplus.
Перечисленные макроимена нельзя как переопределять, так и отменять их определения.
Макроимена __LINE__ и __FILE__ можно определить с помощью команды #line (§R.16.6).
Определено ли макроимя __STDC, и если да, то каково его значение, зависит от реализации.
R.17 Приложение A: Сводка грамматики
Это приложение не относится к справочному руководству языка и не является определением конструкций C++.
Оно только должно служить более полному пониманию С++. Нельзя рассматривать его как точное определение языка, так как описанная здесь грамматика допускает произвольное множество конструкций, каждая из которых законна для С++. Чтобы различать выражения и описания, следует применять правила разрешения неопределенности (§R.6.8, §R.7.1, §R.10.1.1). Далее, для отсеивания синтаксически правильных, но бессмысленных, конструкций следует применять правила контроля доступа, разрешения неопределенности и контроля типа.
R.17.1 Служебные слова
В описаниях: typedef (§R.7.1.3), класса (§R.9), перечисления (§R.7.2), шаблона типа - (§R.14) введены новые, зависящие от контекста, служебные слова, а именно:
Отметим, что имя-typedef, обозначающее класс, является в то же время конструкцией имя-класса (§R.9.1).
R.17.2 Выражения