我已经告诉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. 无断言编译
- 3. 无法导出用于Adobe AIR 1.0的发布版本/编译
- 4. NuGet中的预发布版本号和编译版本号
- 5. Android Studio发布版本没有zipaligning
- 6. 使用git流版本时在github中没有发布版本
- 7. 错误编译版本布局
- 8. 编译发布
- 9. 什么C++编译器可以编译没有错误本出版物的源代码用于游戏开发?
- 10. 用intel C++编译发布版本“cin >> a >> b”编译错误
- 11. CruiseControl.Net建立出版商 - 只能发布编译后的文件
- 12. 异步断言没有在scalatest发射
- 13. 如何断言没有引发异常?
- 14. 将NKDbgPrintfW编译为发布版本中的nop吗?
- 15. 发布版本中的Visual C++ 6编译错误
- 16. 如何在'发布'版本上编译某些Android菜单项
- 17. 发布版本上的XCode编译错误
- 18. Maven发布插件:指定java编译器版本
- 19. C#编译器如何在发布版本中删除Debug.Assert?
- 20. 为发布版本关闭MVC编译调试
- 21. 无法编译发布版本的UWP - Visual Studio 2017
- 22. RestKit编译时映射错误发布版本的iOS
- 23. 是否存在具有本地化编程语言版本的编译器?
- 24. 为什么断言是从生产版本编译而来(性能除外)?
- 25. .NET本机编译器不断抛出编译错误
- 26. require.js编译版本
- 27. C#编译版本
- 28. 编译版本3.2
- 29. 编译“ant”版本时出错
- 30. 有没有办法找出哪个版本的Java applet编译在
你尝试 “重建所有”? – 2011-05-28 16:44:26
调试和发布之间的断言消息有任何区别吗? – 2011-05-28 16:56:28
单个或多个模块输出? – 2011-05-28 16:56:55