Spec-Zone.ru › GCC 4 CPP

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

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

Стандарт 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-4.9.4/cpp/System-specific-Predefined-Macros.html

Spec-Zone.ru

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