c++ - 在 gcc 编译器中禁用特定优化(死代码消除)

标签 c++ optimization gcc dead-code

我想在 C++ 编译中禁用无用代码消除优化。有没有办法通过保留所有其他 -O 优化来禁用此特定优化。我尝试使用 -fnodce 但它不起作用。

更新(从评论中复制):我有类似的东西

timer t;
t.start();
for(int i=1;i<=1000;++i)
    object t;
t.stop();

我想测量对象 t 的构建时间,但什么都不做。我不想通过创建 1000 个对象的数组来做到这一点。有办法解决吗?

最佳答案

在构造的对象上添加“volatile”限定符,这告诉编译器假设构造存在副作用,从而防止对其进行优化。即:

timer t; 
t.start(); 
for(int i=1;i<=1000;++i) 
  volatile object t; 
t.stop(); 

关于c++ - 在 gcc 编译器中禁用特定优化(死代码消除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988291/

相关文章:

c++ - 将 8 位的 BitSet 写入文件 (C++)

c++ - 安装和使用适用于 C++ 的 MQTT Paho 库

创建新数组 : Expression must have pointer to object type 时出现 C++ 错误

javascript - 有什么比 Eval 更快地创建深度克隆吗?

gcc - C 中的内联汇编

c++ - 为什么这个 scanf 返回 false?

mysql - 我需要优化以下sql查询

c - 优化parser函数c程序

linux - 在没有c编译器的linux上安装gcc

c++ - 我怎样才能初始化这个结构?