always_inline(IBM 扩展)
always_inline 函数属性指示编译器内联函数。 满足以下所有条件时,可以直接插入此函数:- 该函数是满足以下任何条件的内联函数:
- 该函数与
inline或__inline__关键字一起指定。 - 指定了选项 -qinline+<function_name> ,其中 function_name 是要直接插入的函数的名称。
该函数在类声明中定义。
- 该函数与
- 此函数未与
noinline或__noinline__属性一起指定。
优化级别为 O2 或更高。
- 要直接插入的函数数不超过编译器可支持的内联函数的限制。
noinline 属性优先于 always_inline 属性。 仅当启用了直接插入时, always_inline 属性才优先于直接插入编译器选项。 如果禁用直接插入,那么将忽略 always_inline 属性。
即使指定了 always_inline 属性,编译器也可能不会内联虚拟函数。 编译器将不会发出参考消息来指示未直接插入虚拟函数。
当您专门指定使用 
always_inline 属性指定的函数模板时,此属性将传播到模板规范。 如果将 always_inline 属性应用于模板规范,那么将忽略重复的 always_inline 属性。 请参阅以下示例。template<class T> inline __attribute__((always_inline)) T test( ){
return (T)0;
}
// The duplicate attribute "always_inline" is ignored.
template<> inline __attribute__((always_inline)) float test<float>(){
return (float)0;
} 
