A. C++内联函数在 在编译时是将该函数的目标代码插入每个调用该函数的地方
内联函数在调用时,是将调用表达式用内联函数体来替换,而一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中。
如果内联失败这个函数就是一个普通的函数,普通的函数不会被编译器展开,只是作为函数调用。内联函数比普通函数效率高的原因就是编译器在调用处把这个函数展开,展开就是直接执行代码而不是调用这个函数,像宏展开的意思。
(1)内联是在运行时还是在编译时扩展阅读:
宏调用并不执行类型检查,甚至连正常参数也不检查,但是函数调用却要检查。C语言的宏使用的是文本替换,可能导致无法预料的后果,因为需要重新计算参数和操作顺序。在宏中的编译错误很难发现,因为它们引用的是扩展的代码,而不是程序员键入的。
许多结构体使用宏或者使用不同的语法来表达很难理解。内联函数使用与普通函数相同的语言,可以随意的内联和不内联。
B. C++内联函数具体有什么作用
内联函数可减少cpu的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数。
内联函数是C++的增强特性之一,用来降低程序的运行时间。当内联函数收到编译器的指示时,即可发生内联:编译器将使用函数的定义体来替代函数调用语句,这种替代行为发生在编译阶段而非程序运行阶段。
值得注意的是,内联函数仅仅是对编译器的内联建议,编译器是否觉得采取你的建议取决于函数是否符合内联的有利条件。如何函数体非常大,那么编译器将忽略函数的内联声明,而将内联函数作为普通函数处理。
内联函数具有一般函数的特性,它与一般函数所不同之处公在于函数调用的处理。一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换。在使用内联函数时,应注意如下几点:
1、类内定义的函数是内联函数,类外定义的函数是非内联函数(短函数可以定义在类内,长函数可以定义在类外)。
2、可以为类外定义的函数指定 inline 关键字,强行为内联函数。
3、在内联函数内不允许用循环语句和开关语句。
4、内联函数的定义必须出现在内联函数第一次被调用之前。