函数属性(IBM 扩展)

函数属性是为了增强使用 GNU C 开发的程序的可移植性而实现的扩展。函数的可指定属性提供了明确的方法来帮助编译器优化函数调用并指示它检查代码的更多方面。 其他产品则提供其他功能。

IBM® XL C 和 XL C/C++ 编译器s 实现 GNU C 函数属性的子集。 对于未实现的特定函数属性,编译器将发出诊断并忽略属性规范。

使用关键字 __attribute__ 指定函数属性,后跟属性名称以及属性名称需要的任何其他参数。 函数 __attribute__ 规范包含在函数的声明或定义中。 语法采用以下格式:

函数属性语法: 函数定义 (表单 1)

读取语法图跳过可视语法图返回类型__attribute__(( ,属性名称__属性名__ ))function_声明程序

函数属性语法: 函数定义 (表单 2)

读取语法图跳过可视语法图__attribute__(( ,属性名__属性名__ ))返回类型function_声明程序 ;

函数属性语法: 函数定义 (表单 3)

读取语法图跳过可视语法图返回类型function_声明程序 __attribute__(( ,属性名__属性名__ ));

您可以指定带有或不带前导和尾部双下划线字符的 attribute_name ; 但是,使用双下划线字符可降低名称与同名宏发生冲突的可能性。 在任何扩展语言级别中进行编译时,这些语言功能集体可用。

以下函数声明都有效:
int __attribute__((attribute_name)) func(int i);   //Form 1
__attribute__((attribute_name)) int func(int);     //Form 2
int func() __attribute__((attribute_name));        //Form 3
仅限 C + + 开始属性说明必须遵循函数可能出现的任何异常声明。 例如:
int func(int) throw(int) __attribute__((pure));
仅限 C++ 结束

支持以下函数属性: