Spec-Zone.ru › GCC 9 CPP

3.7.3 Системно-специфические предопределенные макросы

Препроцессор C обычно предопределяет несколько макросов, указывающих тип используемой системы и машины. Они, очевидно, различны для каждой целевой системы, поддерживаемой GCC. Этот справочник, предназначенный для всех систем и машин, не может сказать вам, каковы их имена, но вы можете использовать cpp -dM для просмотра всех из них. Смотрите Вызов. Все системно-специфические предопределенные макросы расширяются до константного значения, поэтому вы можете проверить их с помощью ‘#ifdef’ или ‘#if’.

Стандарт C требует, чтобы все системно-специфические макросы были частью зарезервированного пространства имен. Все имена, начинающиеся с двух подчеркиваний или подчеркивания и заглавной буквы, зарезервированы для использования компилятором и библиотекой по своему усмотрению. Однако исторически системно-специфические макросы имели имена без специального префикса; например, на Unix-системах часто встречается unix определенным. Для всех таких макросов GCC предоставляет параллельный макрос с добавлением двух подчеркиваний в начале и в конце. Если unix определен, то будет определен и __unix__. Никогда не будет больше двух подчеркиваний; параллелью для _mips является __mips__.

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

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

Далее: C++ Именные операторы, Предыдущее: Общие предопределенные макросы, Наверх: Предопределенные макросы [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/cpp/System-specific-Predefined-Macros.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API