【发布时间】:2015-08-12 17:09:55
【问题描述】:
目前这不是问题,但我担心代码是否被移植或我们更改编译器。
我有一个带有块的代码
{
MyClass myObj;
// copy some other variables but never touch myObj
.
.
} // expect destructor to be called on myObj
myObj 从未在块代码中使用,但构造函数有副作用,我依赖 MyClass 的析构函数代码在块结束时执行。这在我当前的 arm 编译器上按预期工作,并打开了一些优化。
我的问题是,我需要做些什么,比如声明一些 volatile 或设置一些通用属性以防止优化器将 myObj 检测为未使用的变量等。
这不是 C++11 编译器。正如我所说,这目前不是问题,但我不想给其他人留下一个奇怪的未来错误。
【问题讨论】:
-
一个重要的构造函数或析构函数应该足以防止优化器消除它。
标签: c++ optimization raii side-effects