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

Spec-Zone.ru

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