此附录讨论了 C 编译器当前支持的 ISO/IEC 9899:2011 C 编程语言标准的功能。
-std=c11 标志控制编译器识别 9899:2011 ISO/C 标准。有关 -std 标志语法的更多信息,请参见–std=value。
_Alignas
_Alignof
_Noreturn
_Static_assert
_Thread_local
_Alignas 说明符
_Alignof 运算符
_Noreturn
_Static_assert
_Thread_local 存储说明符
允许 typedef 重新定义
匿名 struct/union
允许更新的 UCN 字符集
__STDC_ANALYZABLE__ 宏
__STDC_NO_ATOMICS__ 宏
__STDC_NO_THREADS__ 宏
功能:6.7.5 对齐说明符
_Alignas ( type-name ) _Alignas ( constant-expression )
_Alignas 说明符不能用于声明已使用寄存器存储类说明符声明的 typedef、位字段、函数、参数或对象。
常量表达式应计算为整型常量表达式。常量表达式必须计算为介于 1 和 128 之间且是 2 的幂的整型常量表达式。有效值包括 0、1、2、4、8、16、32、64 和 128。与要声明的对象或成员类型所需的对齐相比,该值必须计算为相同或更严格的对齐。
_Alignas (type-name) 与 _Alignas (_Alignof (type-name)) 等效。
值为 0 的对齐说明符不起作用。
有效的对齐是使用最严格的对齐说明符的对齐。
对于已使用对齐说明符声明的对象,在每次进行其他声明时都必须指定相同的对齐说明符或不指定任何对齐说明符。在声明相同对象的每个源文件中都必须指定该对象的对齐,否则不会定义行为。
功能:6.5.3.4 _Alignof 运算符
_Alignof ( type-name )
_Alignof 运算符会计算为一个整型常量,表示其操作数类型的对齐要求。不会计算操作数。_Alignof 运算符不能用于函数或不完全类型。
功能:6.7.4 函数说明符 _Noreturn
放置 _Noreturn 说明符来声明从不返回的函数,例如:
_Noreturn void leave () { abort(); }
功能:6.7.10 静态断言
_Static_assert ( constant-expression , string-literal ) ;
根据 ISO/IEC 9899:2011 的附件 D,更新 UCN 中允许的字符集。有关被允许字符的完整列表,请参阅 ISO/IEC 9899:2011 附件 D。