标签:
内联函数从源码层看,有函数的结构,而在编译后,却不具备函数的性质。
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。
编译时,类似宏替换,使用函数体替换调用处的函数名。
一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。
应注意如下几点:
1、内联函数可减少cpu的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,
因此一般比较小的函数才使用内联函数。
2、有两种内联函数的声明方法,一种是在函数前使用inline关见字,另一种是在类的内部定义函数的代码,
这样的函数将自动转换为内联函数,而且没必要将inline放在函数前面。
3、内联是一种对编译器的请求,下面这些情况会阻止编译器服从这项请求:函数中包含有循环,switch或
goto语句,递归函数,含有static的函数。
内联函数的定义:
inline 应当是用于函数声明(Declaration)而非函数实现(Implementation)。但由于不同的编译器下inline
关键字所修饰函数的调用范围不一致,因此,一种简单的作法是,将inline函数的声明和实现合一。如果确定函
数仅应用于同一文件,我们可以将函数的声明和实现都放在.c/.cpp中;否则将其放入.h中(这样,包含了此头
文件的任何文件都可以使用它)。
标签:
原文地址:http://www.cnblogs.com/aqing1987/p/4389076.html