我已经读过某些地方,如果函数没有返回值,如果返回语句存在内联扩展可能不起作用。
有人可以告诉我这个的确切原因吗?
答案 0 :(得分:1)
inline
关键字更多地是对编译器的暗示,而不是现在的显式指令。没有关于不使用return语句内联函数的具体规则。这无论如何都是毫无意义的,因为这是宏和内联函数之间唯一的主要区别。
不同的编译器只会使用inline
关键字为内联函数生成不同的代码。 MSC编译器有一个__forceinline
关键字,它将强制函数内联。请注意,不加选择的内联将生成更多代码。目前,性能开销很少是因为函数跳转的开销。我建议你分析你的代码,不要做任何过早的优化。
答案 1 :(得分:0)
没有这样的规则。但是,内联是对编译器的请求,如果可能的话,将其作为宏,对于复杂的函数,内联将被忽略,就像普通函数一样。