Spec-Zone.ru › GCC 14 CPP

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

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

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

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

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

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

Spec-Zone.ru

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