断言不会显示错误消息

Mat*_*ian 4 c++ message assert

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

调试错误!

计划:......

此应用程序已请求Runtime以不寻常的方式终止它.请联系支持团队获取更多信息.

(按"重试"以调试应用程序)

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

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

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

assert(deathRow.size() >= 3 && "There are less than 3 blocks being deleted");
Run Code Online (Sandbox Code Playgroud)

无论我正在使用什么项目,无论是新的还是旧的,都会发生不伦不类的错误.

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

Mot*_*tti 6

如果你使用微软的_ASSERTE宏(注E表达),那么也会出现在断言对话框中的消息.

两个版本ASSERT存在的原因是两者都有优点和缺点,你可以选择你想要的.

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

因为这两种风格只在调试版本中生成代码,所以我倾向于总是使用它,_ASSERTE因为二进制文件的大小几乎不受影响,并且在调试版本中无关紧要.