【发布时间】:2012-03-30 10:13:54
【问题描述】:
是否可以在 Visual Studio 2010 中禁用 RVO(返回值优化)?将优化标志设置为/Od(关闭所有优化)没有帮助。在 g++ 中存在标志 -fno-elide-constructors 禁用 RVO。
【问题讨论】:
标签: c++ visual-studio visual-studio-2010 return-value-optimization
是否可以在 Visual Studio 2010 中禁用 RVO(返回值优化)?将优化标志设置为/Od(关闭所有优化)没有帮助。在 g++ 中存在标志 -fno-elide-constructors 禁用 RVO。
【问题讨论】:
标签: c++ visual-studio visual-studio-2010 return-value-optimization
你不能。就是这么简单。 RVO/NRVO 是标准的,你的代码不应该依赖于它不存在。
【讨论】:
尝试将您的变量定义为volatile,也许可以解决您的问题。如果没有,您应该发送代码...
【讨论】:
return my_volatile_variable; 确实禁用了 RVO 是正确的。 (C++11 §12.8/31 第 1 项。)
volatile的答案。)
没有任何理由禁用此优化!你想达到什么目的?它有助于调试构建运行得更快而没有任何不良副作用。它还确保了依赖于 RVO 或 NRVO 的代码在调试和发布中的工作方式相同。
【讨论】: