内联扩展可能无效的情况?

时间:2014-09-08 10:47:34

标签: c++

我已经读过某些地方,如果函数没有返回值,如果返回语句存在内联扩展可能不起作用。

有人可以告诉我这个的确切原因吗?

2 个答案:

答案 0 :(得分:1)

inline关键字更多地是对编译器的暗示,而不是现在的显式指令。没有关于不使用return语句内联函数的具体规则。这无论如何都是毫无意义的,因为这是宏和内联函数之间唯一的主要区别。

不同的编译器只会使用inline关键字为内联函数生成不同的代码。 MSC编译器有一个__forceinline关键字,它将强制函数内联。请注意,不加选择的内联将生成更多代码。目前,性能开销很少是因为函数跳转的开销。我建议你分析你的代码,不要做任何过早的优化。

答案 1 :(得分:0)

没有这样的规则。但是,内联是对编译器的请求,如果可能的话,将其作为宏,对于复杂的函数,内联将被忽略,就像普通函数一样。