6.12.21 Альтернативные ключевые слова
Параметр -ansi и различные параметры -std отключают некоторые ключевые слова, являющиеся расширениями GNU C. В частности, ключевые слова asm, typeof и inline недоступны в программах, скомпилированных с параметром -ansi или параметром -std=, задающим стандарт ISO, в котором это ключевое слово не определено. Это создает проблемы, если вы хотите использовать эти расширения в заголовочном файле, который может включаться в программы, компилируемые с такими параметрами.
Решить эти проблемы можно, добавив ‘__’ в начало и конец каждого проблемного ключевого слова. Например, используйте __asm__ вместо asm и __inline__ вместо inline.
Другие компиляторы C не принимают эти альтернативные ключевые слова; если вы хотите выполнить компиляцию с помощью другого компилятора, можно определить альтернативные ключевые слова как макросы, заменяющие их стандартными ключевыми словами. Это выглядит так:
#ifndef __GNUC__ #define __asm__ asm #endif
Параметр -pedantic и другие параметры вызывают предупреждения о многих расширениях GNU C. Подавить такие предупреждения можно с помощью ключевого слова __extension__. В частности:
- Запись
__extension__перед выражением предотвращает появление предупреждений о расширениях внутри этого выражения. - В C запись:
[[__extension__ …]]
подавляет предупреждения об использовании атрибутов ‘[[]]’ в версиях C, предшествующих C23.
__extension__ не оказывает никакого другого эффекта.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Alternate-Keywords.html