我有一个 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
会有帮助的话。
最佳答案
const
,无论是否用于内联
代码,都不太可能排除 优化,但不一定允许更多优化。但如果它适用,没有充分的理由不告诉编译器,以便它可以充分利用该信息。
更新:因为即使是内联代码也是在编译时生成的,所以它不能根据任何参数的值进行调整,因为它是未知的。
关于带有内联函数的 const 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27202661/