这似乎是一个错误,因为在Qt Creator上,Q_ASSERT(false)导致我的应用程序退出,即使文档说它应该允许你打破断言:
在Windows上,对于调试版本,此函数将报告_CRT_ERROR 使您能够将调试器连接到应用程序。
在Qt Creator + MinGW中编译我的项目时,代码Q_ASSERT(false);
会导致程序显示此消息(下面的屏幕截图),然后应用程序退出:
此应用程序已请求运行时将其终止 不寻常的方式请联系应用程序的支持团队获取更多信息 信息。
和“应用程序输出”窗格显示此调试输出:
ASSERT: "false" in file ..\IntegrateWithQt\main.cpp, line 6
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
使用Visual Studio编译同一个项目时(我使用Qt Addin导入它),我得到一个更有用的Abort / Retry / Ignore对话框,其中单击Retry会断言断言位置的程序:
在Qt Creator和Visual Studio中链接到Qt的Qt版本是4.8.1。这两个项目都是在调试模式下构建的。
那么如何让Qt Creator允许我在调试模式下断言?
答案 0 :(得分:4)
我的猜测是你在Qt Creator中使用Mingw,在Visual Studio中使用MSVC(显然)。不同的编译器产生不同的代码。
尝试在Creator中使用MSVC(您需要获得使用该编译器构建的Qt版本来执行此操作!)并查看是否仍存在差异。
答案 1 :(得分:2)