Spec-Zone.ru › GCC 4

6.45 Альтернативные ключевые слова

-ansi и различные -std опции отключают определенные ключевые слова. Это создаёт проблемы, когда необходимо использовать расширения GNU C или универсальный заголовочный файл, который должен быть доступен всем программам, включая программы, скомпилированные с ISO C. Ключевые слова asm, typeof и inline недоступны в программах, скомпилированных с -ansi или -std (хотя inline может быть использован в программе, скомпилированной с -std=c99 или -std=c11). Ключевое слово 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__ не оказывает никакого другого влияния.

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

Spec-Zone.ru

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