【Microsoft官方文档】编译器内部函数-笔记(1)

如果一个函数是内部函数,在通常会采用内联方式插入该函数的代码,从而避免函数调用的开销并可发出该函数的高效率计算机指令。 内部函数通常比等效的内联程序集速度更快,因为优化程序拥有众多内部函数行为方式的内置知识,因此可以优化使用内联程序集无法优化的内容。 此外,优化程序还可以采用不同的方式扩展内部函数、对齐缓冲区或根据上下文和调用自变量进行其他方面的调整。

内联函数能提高函数的执行效率,不需要像参数和返回地址那样在堆栈上或从堆栈中推送和弹出内容,尽管他会使二进制文件较大一些。
如果想把一个函数定义为内联函数,就需要在函数名前面放置关键字inline。

关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用。

inline void test(int x, int y);   // inline 只跟test函数的声明放在一起,这是错误的
void test(int x, int y)
{
 ...
} 
void test(int x, int y);   
inline void test(int x, int y) //inline跟函数定义体放在一起,这是正确的食用方法
{
 ...
} 

定义在类声明之中的成员函数将自动地成为内联函数。

class A
{ 
public:
 void B(int x, int y) { ... }   //这里它就成为了内联函数
} 

内联那些包含循环或 switch 语句的函数常常是得不偿失 (除非在大多数情况下, 这些循环或 switch 语句从不被执行).

参考https://blog.csdn.net/u011327981/article/details/50601800/

猜你喜欢

转载自www.cnblogs.com/ZARX/p/13387942.html