如何避免使用assert(..)函数的CRT对话框

时间:2011-09-07 05:54:32

标签: c++ c windows

在Windows中是否有办法通过断言(..)函数避免CRT对话失败?我喜欢将错误消息打印到控制台。如果我们没有在优化版本中定义NDEBUG来实现这个目的,可以使用CrtReportMode(..)吗?

-Kartlee

1 个答案:

答案 0 :(得分:4)

您可以使用_CrtSetReportMode_CrtSetReportFile将输出发送到文件(在本例中为stderr)。

_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE)
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );

关于在发布版本中的使用,请注意备注和库部分:

  

如果未定义_DEBUG,则在预处理期间将删除对_CrtSetReportMode的调用。

     

库:仅限C运行时库的调试版本。