编译器只有在指定-O2的时候,才会将inline函数进行内联展开,如果不指定-O2的时候,还是会给inline函数生成单独的函数段;
如果想要编译器不管在任何时候就强制内联的话,需要在函数申明的时候指定__attribute__((always_inline));
#include <stdio.h>
inline __attribute__((always_inline)) int inline_function(int &a)
{
a = 50;
return 0;
}
int call_inline()
{
int a = 3;
inline_function(a);
return 0;
}
int main()
{
int a = 2;
call_inline();
inline_function(a);
return 0;
}
__attribute__还能设置一些其他的属性:http://blog.csdn.net/ruixj/article/details/4274721