如果我有例如下面的函数:任何C++编译器在内联时是否删除总是保持相同答案的语句?
void foo(DoThisSometimes, DoThisAlways)
{
if (DoThisSometimes == 1)
{
//Do stuff
}
//Do other stuff
{
而内联片的代码调用与DoThisSometimes
此函数为0,在那里,将来自内联函数去掉这部分代码任何编译器:
if (DoThisSometimes == 1)
{
//Do stuff
}
也许大多数编译器都这么做。 – 2013-02-19 18:54:41
如果编译器在用'DoThisSometimes'的文字值调用编译器时将内联函数'foo',它将(可能)移除该分支(并且对于'if ='中的代码'!= 1')。 – 2013-02-19 18:55:26
大多数编译器可能会在启用优化的情况下执行此操作,特别是在应用“全局优化”时。 – 2013-02-19 18:55:29