Spec-Zone.ru › GCC 5 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-5.5.0/cpp/System-specific-Predefined-Macros.html

Spec-Zone.ru

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