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

Spec-Zone.ru

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