Spec-Zone.ru › GCC 11

Далее: Неполные enum типы, Предыдущее: Использование языка ассемблера в коде C, Вверх: Расширения языка семейства C [Оглавление][Индекс]

6.48 Зарезервированные альтернативные ключевые слова ¶

Опции -ansi и различные опции -std отключают некоторые ключевые слова. Это создаёт проблемы, когда вы хотите использовать расширения GNU C или общий заголовочный файл, который должен быть пригоден для всех программ, включая программы ISO C. Ключевые слова asm, typeof и inline недоступны в программах, скомпилированных с -ansi или -std (хотя inline можно использовать в программе, скомпилированной с -std=c99 или более поздней версией стандарта). Ключевое слово ISO C99 restrict доступно только при использовании -std=gnu99 (которая в конечном итоге станет стандартной) или -std=c99 (или эквивалентной -std=iso9899:1999), или опции для более поздней версии стандарта.

Способ решения этих проблем заключается в добавлении ‘__’ в начале и конце каждого проблемного ключевого слова. Например, используйте __asm__ вместо asm, и __inline__ вместо inline.

Другие компиляторы C не примут эти альтернативные ключевые слова; если вы хотите скомпилировать с другим компилятором, вы можете определить альтернативные ключевые слова как макросы для их замены обычными ключевыми словами. Это выглядит так:

#ifndef __GNUC__
#define __asm__ asm
#endif

Опции -pedantic и другие опции вызывают предупреждения для многих расширений GNU C. Вы можете предотвратить такие предупреждения в одном выражении, написав __extension__ перед выражением. __extension__ не оказывает никакого воздействия помимо этого.

Далее: Неполные enum типы, Предыдущее: Использование языка ассемблера в коде C, Вверх: Расширения языка семейства C [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Alternate-Keywords.html

Spec-Zone.ru

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