我有一个inline
函数,它根据输入参数进行一些初始化,并且想知道我是否应该使用const
关键字作为参数,这会使编译器能够进行更多优化?例如这个伪代码:
inline void init(ENUM1 e1, ENUM2 e2, bool b1, bool b2, ENUM3 e3)
{
if (b1) { … }
switch (e2) {
…
}
// And so on…
}
修改
关于同样事情的另一个问题。当调用此函数init()
时,调用将替换为此函数内的整个代码,或仅替换适合参数的部分。例如,如果b1
为真,则调用将替换为if (b1) { … }
或仅替换为if括号中的代码。同样适用于switch
?
如果添加const
会有所帮助,这就是我的意思。
答案 0 :(得分:1)
const
代码中使用的 inline
不太可能排除优化,但可能不一定允许更多优化。但如果它适用,那么没有充分的理由不告诉编译器它可以充分利用它可以的信息。
更新:由于即使内联代码是在编译时生成的,也无法根据任何参数的值进行调整,因为它还不为人所知。