gpt4 book ai didi

c++ - 断言不会显示错误信息

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

我在 Visual C++ 2005 中遇到了一个关于断言的奇怪问题。我试图将断言引入我的程序,但无论我尝试使用什么断言(assert() 或 BOOST_ASSERT_MSG),它都会给出完全相同的错误消息除了发生调试错误外,它什么也没告诉我。

Debug Error!

Program: ...

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

(Press Retry to Debug the application)

这是我正在使用的提升断言

BOOST_ASSERT_MSG(deathRow.size() >= 3, "There are less than 3 blocks being deleted!");

是的,它给出了与以下完全相同的错误消息:

assert(deathRow.size() >= 3 && "There are less than 3 blocks being deleted");

无论我使用的是什么项目,无论是新项目还是旧项目,都会发生不可描述的错误。

我不知道为什么。我知道我之前在另一个程序中使用过断言并且没有这个问题。帮助将不胜感激。

最佳答案

如果您使用 Microsoft 的 _ASSERTE宏(注意 E 表示 Expression),那么消息也会出现在断言对话框中。

ASSERT 的两个版本存在的原因是它们各有优点和缺点,您可以选择您想要的。

  • _ASSERTE 提供更好的诊断,但会导致二进制文件稍大(因为表达式的文本表示必须包含在二进制文件中)
  • _ASSERT 在断言对话框中提供的信息较少,但生成的二进制文件较小。

由于这两种版本都只在调试版本中生成代码,所以我倾向于始终使用 _ASSERTE,因为二进制文件的大小几乎不会受到影响,而且在调试版本中也无关紧要。

关于c++ - 断言不会显示错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648277/

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