变量属性(IBM 扩展)
变量属性是为了便于编译使用 GNU C/C++ 编译器开发的程序而提供的语言扩展。 这些语言功能允许您使用指定的属性来指定数据对象的特殊属性。 变量 属性适用于 简单变量,聚集和聚集的成员变量的声明。
使用关键字 __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 */
};支持以下变量属性:
