inline在调用的地方直接展开代码,省去了调用时间,增加了代码使用空间,
inline的方式
第一,显式:内联函数体必须是和函数体声明在一起,才有效。
c 函数
#include <stdio.h>
inline void test()
{
printf("!!!!!!!!!!!!\n");
}
int main()
{
test();
return 0;
}
c++ 类
#include <stdio.h>
class Test
{
public:
Test(){} // 隐式inline
~Test(){} // 隐式inline
void testPrint();
};
// 显式inline
inline void Test::testPrint()
{
printf("!!!!!!!\n");
}
int main()
{
Test test;
test.testPrint();
return 0;
}
第二,隐式:在类的内部定义了函数体的函数,被默认为是内联函数。而不管你是否有inline关键字。
#include <stdio.h>
class Test
{
public:
Test(){} // 隐式inline
~Test(){} // 隐式inline
void testPrint(){ printf("!!!!!!!!!!!!!\n");} // 隐式inline
};
int main()
{
Test test;
test.testPrint();
return 0;
}
条件:真正inline成功的前提是取决于编译器,其前提条件可能是,函数体没有循环和递归且程序不太复杂。
inline在编译时由编译器优化,函数是否被inline可以通过反汇编的方式,
通过对调用的地方代码分析是直接展开还是call的方式即可。