变量属性

IBM 扩展 IBM® Extension 的开始。

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

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

变量属性语法: 后声明器

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

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

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

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

在单个声明行上的声明符的逗号分隔列表中,如果变量属性出现在所有声明符之前,那么它将应用于声明中的所有声明符。 如果该属性出现在声明器之后,那么它仅适用于紧跟在前面的声明器。 例如:
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 */

};

IBM 扩展 IBM Extension 结束。