我已经告诉VC++在发布模式下编译我的程序,但assert()语句仍然会触发。我认为断言应该是从发布版本中编译出来的。这是怎么回事?有没有其他设置我需要设置跳过编译它们?断言没有编译出发布版本
回答
检查您正在定义的预处理器符号。调试版本通常会定义_DEBUG
,发布版本通常会定义NDEBUG
。当定义NDEBUG
时,断言通常会被关闭。
NDEBUG设置和_DEBUG不是 – jeffythedragonslayer 2011-05-28 16:51:44
好吧,这很有趣:在主项目中,具有WinMain(),NDEBUG定义和_DEBUG不是。但是对于所有其他项目,即使它们设置为发布模式,情况正好相反。 – jeffythedragonslayer 2011-05-28 17:03:34
好的。所以我现在已经把所有的文件合并到一个项目中,并且它似乎解决了这个问题。仍然不知道为什么每个项目的调试符号都不同。 – jeffythedragonslayer 2011-05-29 04:53:26
在调试器下打开应用程序。断言对话框启动时,执行debug-> break。查看assert正在触发的源文件。现在看看该文件的构建设置。如果设置看起来正确并且您正在加载发行版本,请在编译器命令行上设置/ P和/ d1PP以显示错误的#define来自何处。
马丁
- 1. Q/A,发布版本VS调试版本,并断言
- 2. 无法导出用于Adobe AIR 1.0的发布版本/编译
- 3. Android Studio发布版本没有zipaligning
- 4. 编译发布
- 5. 错误编译版本布局
- 6. CruiseControl.Net建立出版商 - 只能发布编译后的文件
- 7. 如何断言没有引发异常?
- 8. 如何在'发布'版本上编译某些Android菜单项
- 9. 将NKDbgPrintfW编译为发布版本中的nop吗?
- 10. 发布版本上的XCode编译错误
- 11. Maven发布插件:指定java编译器版本
- 12. 无法编译发布版本的UWP - Visual Studio 2017
- 13. C#编译器如何在发布版本中删除Debug.Assert?
- 14. 是否存在具有本地化编程语言版本的编译器?
- 15. 为什么断言是从生产版本编译而来(性能除外)?
- 16. .NET本机编译器不断抛出编译错误
- 17. C#编译版本
- 18. 编译“ant”版本时出错
- 19. 有没有告诉编译器打印其版本的命令?
- 20. 如何在调试版本中测试断言,但在发布中返回值?
- 21. 错误在编译编译版本
- 22. 为所有Linux发行版编译C++
- 23. 调试发布版本时出错
- 24. CppUnit预计异常与断言抛出警告编译C4127
- 25. _invalid_parameter获取没有有用的信息发布版本
- 26. OpenGL的编译 - glGetUniformLocation没有宣布
- 27. Visual Studio 2010根据我的项目是否正在编译构建或发布,与第三方库的调试版本或发布版本进行编译?
- 28. ,只有发生在断言
- 29. 编辑团队版本中发布版本的项目属性
- 30. 断言提交处于发布分支
你尝试 “重建所有”? – 2011-05-28 16:44:26
调试和发布之间的断言消息有任何区别吗? – 2011-05-28 16:56:28
单个或多个模块输出? – 2011-05-28 16:56:55