将内联函数避免外部条件

Will inline function avoid external condition?

本文关键字:外部 条件 函数      更新时间:2023-10-16

我想确认我想到的某种优化是可能的。

// 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
    }
}

由于func1的衬里,Main的条件是否会被优化,并防止对其进行实际测试?(仅测试func1中的条件)。

这只是示例代码。但是,由于我的真实嵌套函数无论如何都大约是简短的,因此我只需将func1中的条件复制到所有想调用此功能的地方,如果事实证明这是不可能的。

最后,我想知道(仅在可能的优化时)是否仅仅是"返回值优化"范式的情况。

如果__forceinline属性受到尊重,则您的代码等效于

void Test::Main()
{  
    if (((externalCond1 && externalCond2) ? true : false) == true)
    {  
        //Do something
    }
}

如果您的条件在此编译单元外部的变量方面是外部的,则不能对其进行优化,因为它们的值在编译时未知。