C++编程思想笔记——内联函数

C++中预处理器不能存取private数据

有两种编译器不能处理内联的情况:

1.假如函数太复杂,编译器不能执行内联。这取决于特定编译器,但大多数编译器这时都会放弃内联方式,因为这时内联可能不为我们提供任何效率。一般地,任何种类的循环

都被认为太复杂而不扩展为内联函数。循环在 函数里可能比调用花费更多的时间。加入函数仅有一条简单语句,编译器可能没有任何内联的麻烦。但加入有许多语句,调用函数的开销比执行函数体开销少多了。

2.加入要显式或隐含地取函数地址,编译器也不能执行内联。因为这时编译器必须为函数代码分配内存从而为我们产生一个函数的地址。但当地址不需要时,编译器仍可能内联代码。

必须理解内联仅是编译器的一个建议,编译器不强迫内联任何代码。一个好的编译器将会内联小的简单的函数,同时明智地忽略那些太复杂的内联。


你可能感兴趣的:(C++编程思想笔记——内联函数)