Spec-Zone.ru › GCC 11 CPP

Следующая: C++ Имена операторов, Предыдущая: Общие предопределённые макросы, Вверх: Предопределённые макросы [Оглавление][Индекс]

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

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

Все системно-специфические предопределённые макросы расширяются до константного значения, поэтому вы можете проверить их с помощью «#ifdef» или «#if».

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

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

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

Следующая: C++ Имена операторов, Предыдущая: Общие предопределённые макросы, Вверх: Предопределённые макросы [Оглавление][Индекс]

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

Spec-Zone.ru

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