变量属性(IBM 扩展)

变量属性是为了便于编译使用 GNU C/C++ 编译器开发的程序而提供的语言扩展。 这些语言功能允许您使用指定的属性来指定数据对象的特殊属性。 变量 属性适用于 简单变量,聚集和聚集的成员变量的声明。

使用关键字 __attribute__ 指定变量属性,后跟属性名称以及属性名称需要的任何其他参数。 变量 __attribute__ 规范包含在变量的声明中,并且可以放在声明符之前或之后。 虽然存在变体,但语法通常采用以下任一格式:

变量属性语法: 后声明器

读取语法图跳过可视语法图声明符__attribute__(( ,属性名称__attribute 名称 __ ))

变量属性语法: 预声明程序

读取语法图跳过可视语法图类型说明符__attribute__(( ,属性名称__attribute 名称 __ ))声明符初始化方法

您可以指定带有或不带前导和尾部双下划线字符的 属性名 ; 但是,使用双下划线字符会降低名称与同名宏发生冲突的可能性。 对于不受支持的属性名称, XL C/C++ 编译器将发出诊断并忽略属性规范。 可以在同一属性规范中指定多个属性名称。

在单个声明行上的声明符的逗号分隔列表中,如果变量属性出现在所有声明符之前,那么它将应用于声明中的所有声明符。 如果该属性出现在声明符之后,那么它仅适用于紧跟在前面的声明符。 例如:
struct A  {

	int b __attribute__((aligned));           /* typical placement of variable */
                                            /* attribute */
	int __attribute__((aligned)) c;           /* variable attribute can also be */
                                            /* placed here */

	int d, e, f __attribute__((aligned));     /* attribute applies to f only */

	int g __attribute__((aligned)), h, i;     /* attribute applies to g only */

	int __attribute__((aligned)) j, k, l;     /* attribute applies to j, k, and l */ 
 
 };

支持以下变量属性: