首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不会被优化的最简单的“未使用”代码是什么?

不会被优化的最简单的“未使用”代码是什么?
EN

Stack Overflow用户
提问于 2012-07-28 07:54:14
回答 6查看 1.6K关注 0票数 3

我经常想通过断点测试函数中变量的值。在许多情况下,该变量实际上从未被任何“做事情”的代码引用,但这并不意味着我不想看到它。不幸的是,优化器对我不利,在编译时简单地删除了所有这样的代码,所以我不得不想出令人费解的粗略之处,以欺骗编译器认为这些值实际上很重要,所以它们不会被优化掉。我不想关闭优化器,因为它在其他地方做重要的事情,但为了调试,我只想暂时禁用这一块代码。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-07-28 08:00:17

根据定义,生成可观察行为的代码符合要求。例如,printf("")

对易失性变量的访问也正式地构成了可观察的行为,尽管如果一些编译器仍然丢弃“不必要的”易失性变量,我不会感到惊讶。

出于这个原因,对I/O函数的调用对我来说是最好的选择。

票数 4
EN

Stack Overflow用户

发布于 2012-07-28 07:59:54

您可以尝试使用"volatile“关键字。在http://en.wikipedia.org/wiki/Volatile_variable上有一些介绍。

一般而言,volatile关键字旨在防止编译器对假定变量的值不能“自行”更改的代码应用任何优化。

票数 1
EN

Stack Overflow用户

发布于 2012-07-28 07:56:01

你试过了吗?

代码语言:javascript
复制
#pragma optimize("",off)

我认为是MSVS特有的- http://msdn.microsoft.com/en-us/library/chh3fb0k(v=vs.80).aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11697026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档