gpt4 book ai didi

c++ - 现代编译器能否优化表达式派生自函数的常量表达式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:05 25 4
gpt4 key购买 nike

据我了解,现代 C++ 编译器在以下方面采用了捷径:

if(true)
{do stuff}

但是像这样的东西怎么样:

bool foo(){return true}
...
if(foo())
{do stuff}

Or:

class Functor
{

public:
bool operator() () { return true;}

}

...

Functor f;

if(f()){do stuff}

最佳答案

这取决于编译器是否可以在同一编译单元中看到 foo()

启用优化后,如果 foo() 与调用者在同一个编译单元中,它可能会内联对 foo() 的调用,然后简化优化与之前相同的 if (true) 检查。

如果将 foo() 移动到单独的编译单元,内联将不再发生,因此大多数编译器将无法再优化此代码。 (链接时优化可以跨编译单元进行优化,但不太常见——并非所有编译器都支持它,而且通常效果不佳。)

关于c++ - 现代编译器能否优化表达式派生自函数的常量表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com