c++ - 如果功能有副作用,可以优化掉吗?

标签 c++ static optimization

我想在主线程上初始化一些静态数据。

int32_t GetFoo(ptime t)
{
   static HugeBarData data;
   return data.Baz(t);
}

int main()
{
    GetFoo(); // Avoid data race on static field. 
              // But will it be optimized away as unnecessary?

    // Spawn threads. Call 'GetFoo' on the threads.
}

如果编译器可能决定删除它,我怎么能强制它留在那里?

最佳答案

C++ 编译器可以优化掉的唯一副作用函数是不必要的构造函数调用,尤其是复制构造函数。

参见 Under what conditions does C++ optimize out constructor calls?

关于c++ - 如果功能有副作用,可以优化掉吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559875/

相关文章:

algorithm - 如何轻松地将一个整数转换为两个整数并进行逆转换?

c++ - 优化 2D 旋转

c++ - 在没有对象切片的情况下将派生对象分配给基类对象

C++ 保护进程不被挂起

optimization - 如何简化这段代码或者更好的设计?

opencv - 在 Pandas 板上使用静态链接进行 OpenCV 编译的问题

c# - c#中的java静态操作

c++ - C++初始化中的 "several values"是什么?

c++ - 了解 Visual Studio 2010 中的此错误 (LNK 2019)

c++ - C++ 中无法解析的外部符号(使用 VS2017)