GNU C 兼容性扩展

使用 -qlanglvl=extended 选项 (缺省语言级别) 启用 GNU C 语言扩展的以下子集。

表 1. 缺省 IBM XL C++ 扩展,用于与 GNU C 兼容
语言功能 讨论内容:
__align 类型限定符 __align 类型限定符(IBM 扩展)
__alignof__ operator(运算符) __alignof__ 运算符(IBM 扩展)
__imag____real__ 复杂类型运算符 __real__ 和 __imag__ 运算符(IBM 扩展)
__typeof__ operator(运算符) typeof 运算符(IBM 扩展)
asm 标签 组合件标签(IBM 扩展)
全局寄存器变量 指定寄存器中的变量(IBM 扩展)
按复合文字初始化静态变量 复合字面值表达式
将灵活的阵列成员放置在结构或并集中的任何位置 灵活数组成员
复杂类型 (增量,减量和复杂共轭) 上的后缀和一元运算符 一元表达式
表达式中的语句和声明 (语句表达式) 语句表达式(IBM 扩展)
聚集的灵活阵列成员的静态初始化 灵活数组成员
具有作为另一结构的成员的柔性阵列成员的结构 灵活数组成员

使用 -qlanglvl=extended 选项 (缺省语言级别) 启用 GNU C 语言扩展的以下子集。 这些扩展还可以由下表中列出的特定编译器选项启用或禁用:

表 2。 缺省 IBM XL C++ 扩展,用于与 GNU C 兼容,具有各个选项控件
语言功能 讨论内容: 单个选项控件
__alignof__alignof__ 关键字 __alignof__ 运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=__alignof, -q[no]keyword=__alignof__
__attribute__attribute__ 关键字 变量属性 (IBM 扩展)函数属性 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=__attribute, -q[no]keyword=__attribute__
__complex__ 关键字 语言扩展 (IBM 扩展) 的关键字 -q[no]keyword=__complex__
__extension__ 关键字 语言扩展 (IBM 扩展) 的关键字 -q[no]keyword=__extension__
__imag____real__ 关键字 __real__ 和 __imag__ 运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=__imag__, -q[no]keyword=__real__
__label__ 关键字 嵌套函数 (仅限 C) (IBM 扩展)本地声明的标签 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=__label__
__restrict__restrict__ 关键字 限制类型限定符语言扩展 (IBM 扩展) 的关键字 -q[no]keyword=__restrict, -q[no]keyword=__restrict__
#assert#unassert 预处理器伪指令 断言伪指令(IBM 扩展) -qlanglvl=[no]gnu_assert
#include_next preprocessor directive(预处理器伪指令) #include_next 伪指令(IBM 扩展) -qlanglvl=[no]gnu_include_next
#warning preprocessor directive(预处理器伪指令) #warning 伪指令(IBM 扩展) -qlanglvl=[no]gnu_warning
备用 关键字 语言扩展 (IBM 扩展) 的关键字 -q[no]keyword=token
asm__asm 关键字 组合件标签 (IBM 扩展)内联组合件语句 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=asm, -qasm
asm 内联组合件语言语句 内联汇编语句(IBM 扩展) -qasm
复杂文字后缀 复杂文字 -qlanglvl=[no]gnu_suffixij
计算的 goto 语句 计算的 goto 语句 (IBM 扩展) -qlanglvl=[no]gnu_computedgoto
函数属性 函数属性(IBM 扩展) -q[no]keyword=__attribute__
标签为值 标签作为值(IBM 扩展) -qlanglvl=[no]gnu_labelvalue
本地声明的标签 局部声明的标签(IBM 扩展) -qlanglvl=[no]gnu_locallabel
typeof__typeof__ 关键字 类型运算符 (IBM 扩展)语言扩展的关键字 (IBM 扩展) -q[no]keyword=__typeof, -q[no]keyword=__typeof__
typeof operator(运算符) typeof 运算符(IBM 扩展) -q[no]keyword=typeof
类型属性 类型属性(IBM 扩展) -q[no]keyword=__attribute__
变量属性 变量属性(IBM 扩展) -q[no]keyword=__attribute__
可变宏扩展 可变宏扩展 (IBM 扩展) -qlanglvl=[no]gnu_varargmacros
可视性函数属性 visibility(IBM 扩展) -qvisibility
可视性变量属性 可视性变量属性(IBM 扩展) -qvisibility
零扩展数据块阵列 零扩展数据块阵列成员 (IBM 扩展) -qlanglvl=[no]zeroextarray
注: 如果变量和函数未从 pragma 伪指令,显式指定的属性或传播规则中获取可视性属性,那么可以使用 -qvisibility 选项来指定这些变量和函数的可视性属性。 此选项不能用于禁用变量或函数的可视性属性。

以下功能需要使用下表中列出的其他选项进行编译:

表 3。 IBM XL C++ 扩展以实现 GNU C 兼容性,需要其他编译器选项
语言功能 讨论内容: 必需的编译选项
标识中的美元符号 标识中的字符 -qdollar