GNU C 兼容性扩展

缺省情况下,在所有语言级别都启用了以下功能:

表 1. 用于 GNU C 兼容性的缺省 IBM XL C 扩展
语言功能 讨论内容:
#include_next preprocessor directive(预处理器伪指令) #include_next 伪指令(IBM 扩展)
缺省情况下,使用以下任何命令进行编译时,将启用以下功能:
  • xlc 调用命令
  • -qlanglvl=extc99 | extc89 | extc1x 选项
表 2。 用于 GNU C 兼容性的缺省 IBM XL C 扩展
语言功能 讨论内容:
__alignof__alignof__ 关键字 __alignof__ 运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展)
__align 类型限定符 __align 类型限定符(IBM 扩展)
__alignof__ operator(运算符) __alignof__ 运算符(IBM 扩展)
__attribute__attribute__ 关键字 变量属性 (IBM 扩展)函数属性 (IBM 扩展)语言扩展的关键字 (IBM 扩展)
__complex__ 关键字 语言扩展 (IBM 扩展) 的关键字
__extension__ 关键字 语言扩展 (IBM 扩展) 的关键字
__imag____real__ 关键字 __real__ 和 __imag__ 运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展)
__imag____real__ 复杂类型运算符 __real__ 和 __imag__ 运算符(IBM 扩展)
__inline__ 关键字 内联函数说明符语言扩展 (IBM 扩展) 的关键字
__label__ 关键字 嵌套函数 (仅限 C) (IBM 扩展)本地声明的标签 (IBM 扩展)语言扩展的关键字 (IBM 扩展)
__restrict__restrict__ 关键字 限制类型限定符语言扩展 (IBM 扩展) 的关键字
__thread 关键字 __thread 存储类说明符 (IBM 扩展)语言扩展的关键字 (IBM 扩展)
__typeof__ 关键字 类型运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展)
__typeof__ operator(运算符) typeof 运算符(IBM 扩展)
#assert#unassert 预处理器伪指令 断言伪指令(IBM 扩展)
#warning preprocessor directive(预处理器伪指令) #warning 伪指令(IBM 扩展)
备用 关键字 语言扩展 (IBM 扩展) 的关键字
asm 标签 组合件标签(IBM 扩展)
强制转换为并集类型 强制转换为并集类型 (仅限 C) (IBM 扩展)
复杂文字后缀 复杂文字
计算的 goto 语句 计算的 goto 语句 (IBM 扩展)
函数属性 函数属性(IBM 扩展)
广义 lvalues 左值和右值
全局寄存器变量 指定寄存器中的变量(IBM 扩展)
按复合文字初始化静态变量 复合字面值表达式
标签为值 标签作为值(IBM 扩展)
内联函数的链接 内联函数的链接
本地声明的标签 局部声明的标签(IBM 扩展)
嵌套函数 嵌套函数(仅限 C)(IBM 扩展)
将灵活的阵列成员放置在结构或并集中的任何位置 灵活数组成员
复杂类型 (增量,减量和复杂共轭) 上的后缀和一元运算符 增量运算符 + +递减运算符 --按位求反运算符 ~
表达式中的语句和声明 (语句表达式) 语句表达式(IBM 扩展)
聚集的灵活阵列成员的静态初始化 灵活数组成员
具有作为另一结构的成员的柔性阵列成员的结构 灵活数组成员
类型属性 类型属性(IBM 扩展)
变量属性 变量属性(IBM 扩展)
可变宏扩展 可变宏扩展 (IBM 扩展)
零扩展数据块阵列 零扩展数据块阵列成员 (IBM 扩展)
缺省情况下,使用以下任何命令进行编译时,将启用以下功能:
  • xlc 调用命令
  • -qlanglvl=extc99 | extc89 | extc1x 选项
它们也由下表中列出的特定编译器选项启用或禁用:
表 3。 IBM XL C 扩展,用于实现与各个选项控件的 GNU C 兼容性
语言功能 讨论内容: 单个选项控件
asm__asm 关键字 组合件标签 (IBM 扩展)内联组合件语句 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=asm, -qasm
asm 内联组合件语言语句 内联汇编语句(IBM 扩展) -qasm
typeof 关键字 类型运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=typeof
typeof operator(运算符) typeof 运算符(IBM 扩展) -q[no]keyword=typeof
可视性函数属性 visibility(IBM 扩展) -fvisibility (-qvisibility)
可视性变量属性 可视性变量属性(IBM 扩展) -fvisibility (-qvisibility)
注: 如果变量和函数未从 pragma 伪指令,显式指定的属性或传播规则中获取可视性属性,那么可以使用 -qvisibility 选项来指定这些变量和函数的可视性属性。 此选项不能用于禁用变量或函数的可视性属性。
以下功能需要使用其他选项进行编译:
表 4。 IBM XL C 扩展以实现 GNU C 兼容性,需要其他编译器选项
语言功能 讨论内容: 必需的编译选项
__thread 存储类说明符 (storage class specifier) __thread 存储类说明符(IBM 扩展) -qtls
标识中的美元符号 标识中的字符 -qdollar