C++中预处理器不能存取private数据
有两种编译器不能处理内联的情况:
1.假如函数太复杂,编译器不能执行内联。这取决于特定编译器,但大多数编译器这时都会放弃内联方式,因为这时内联可能不为我们提供任何效率。一般地,任何种类的循环
都被认为太复杂而不扩展为内联函数。循环在 函数里可能比调用花费更多的时间。加入函数仅有一条简单语句,编译器可能没有任何内联的麻烦。但加入有许多语句,调用函数的开销比执行函数体开销少多了。
2.加入要显式或隐含地取函数地址,编译器也不能执行内联。因为这时编译器必须为函数代码分配内存从而为我们产生一个函数的地址。但当地址不需要时,编译器仍可能内联代码。
必须理解内联仅是编译器的一个建议,编译器不强迫内联任何代码。一个好的编译器将会内联小的简单的函数,同时明智地忽略那些太复杂的内联。
本文探讨了C++中内联函数的两个主要限制:一是当函数过于复杂时,编译器可能不会将其内联;二是当需要获取函数地址时,无法进行内联。文章还解释了内联仅作为给编译器的建议,并非强制执行。
1263

被折叠的 条评论
为什么被折叠?



