我经常想通过断点测试函数中变量的值。在许多情况下,该变量实际上从未被任何“做事情”的代码引用,但这并不意味着我不想看到它。不幸的是,优化器对我不利,在编译时简单地删除了所有这样的代码,所以我不得不想出令人费解的粗略之处,以欺骗编译器认为这些值实际上很重要,所以它们不会被优化掉。我不想关闭优化器,因为它在其他地方做重要的事情,但为了调试,我只想暂时禁用这一块代码。
发布于 2012-07-28 08:00:17
根据定义,生成可观察行为的代码符合要求。例如,printf("")。
对易失性变量的访问也正式地构成了可观察的行为,尽管如果一些编译器仍然丢弃“不必要的”易失性变量,我不会感到惊讶。
出于这个原因,对I/O函数的调用对我来说是最好的选择。
发布于 2012-07-28 07:59:54
您可以尝试使用"volatile“关键字。在http://en.wikipedia.org/wiki/Volatile_variable上有一些介绍。
一般而言,volatile关键字旨在防止编译器对假定变量的值不能“自行”更改的代码应用任何优化。
发布于 2012-07-28 07:56:01
你试过了吗?
#pragma optimize("",off)我认为是MSVS特有的- http://msdn.microsoft.com/en-us/library/chh3fb0k(v=vs.80).aspx
https://stackoverflow.com/questions/11697026
复制相似问题