我想确认是否有可能出现某种优化。
// test.h
class Test
{
public:
static void Main();
private:
__forceinline static bool func1()
{
return ((externalCond1 && externalCond2) ? true : false);
}
}
// test.cpp
#include "test.h"
void Test::Main()
{
if(func1() == true)
{
//Do something
}
}
由于内联Main
,func1
的条件是否会被优化掉,并阻止它实际被测试? (导致仅测试func1
)内的条件。
这只是一个示例代码。但是,由于我的实际内联函数是关于那个短的,我只是将func1
中的条件复制到想要调用此函数的所有地方,如果事实证明这种优化是不可能的。
最后,我想知道(只有在可以进行优化的情况下)是否仅仅是"返回值优化"范例
答案 0 :(得分:0)
如果__forceinline
属性受到尊重,则您的代码等同于
void Test::Main()
{
if (((externalCond1 && externalCond2) ? true : false) == true)
{
//Do something
}
}
如果你的条件是外部的,因为它是这个编译单元外部的变量,那么它们就无法被优化掉,因为它们的值在编译时是未知的。