gpt4 book ai didi

c++ - 当我的项目在 Visual Studio 和 Qt Creator 中构建时,Q_ASSERT 具有不同的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:53 25 4
gpt4 key购买 nike

这似乎是一个错误,因为在 Qt Creator 上,Q_ASSERT(false) 导致我的应用程序退出,即使文档说它应该允许您中断断言:

On Windows, for debug builds, this function will report a _CRT_ERROR enabling you to connect a debugger to the application.

在 Qt Creator 上:

当在 Qt Creator+MinGW 中编译我的项目时,代码 Q_ASSERT(false); 导致程序显示此消息(下面的屏幕截图),之后应用程序退出:

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

enter image description here

应用程序输出 Pane 显示此调试输出:

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 上:

当使用 Visual Studio 编译同一项目时(我使用 Qt 插件导入它),我得到了一个更有用的中止/重试/忽略对话框,其中单击重试会在断言的位置中断程序:

enter image description here

我在 Qt Creator 和 Visual Studio 中链接到的 Qt 版本是 4.8.1。这两个项目都是在 Debug模式下构建的。

那么我如何让 Qt Creator 允许我在 Debug模式下断言行?

最佳答案

我的猜测是您在 Qt Creator 中使用 Mingw,在 Visual Studio 中使用 MSVC(显然)。不同的编译器产生不同的代码。

尝试在 Creator 中使用 MSVC(您需要获得使用该编译器构建的 Qt 版本才能做到这一点!)并查看是否仍然存在差异。

关于c++ - 当我的项目在 Visual Studio 和 Qt Creator 中构建时,Q_ASSERT 具有不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com