C++ 自定义断言宏

C++ 自定义断言宏,c++,windows,assert,C++,Windows,Assert,在Windows/c++上,我希望自定义“断言”对话框以永远忽略断言,这样我就可以更积极地处理断言。我理解编写正确的assert宏有多困难,我不想这样做,只需挂接对话框代码即可。有没有一个简单的方法(或简明的黑客)来做到这一点 (谷歌缓存) 更新:更具攻击性=>更频繁地使用,用于非草率错误。我希望能够永远忽略一个断言,这样,如果循环中出现一个小错误断言,它不会有效地停止我的进程。如果“更激进”的意思是使用断言进行错误处理,那么最好使用异常。查看 功能或更新版本。您可以使用它来安装一个钩子,该钩子

在Windows/c++上,我希望自定义“断言”对话框以永远忽略断言,这样我就可以更积极地处理断言。我理解编写正确的assert宏有多困难,我不想这样做,只需挂接对话框代码即可。有没有一个简单的方法(或简明的黑客)来做到这一点

(谷歌缓存)

更新:更具攻击性=>更频繁地使用,用于非草率错误。我希望能够永远忽略一个断言,这样,如果循环中出现一个小错误断言,它不会有效地停止我的进程。

如果“更激进”的意思是使用断言进行错误处理,那么最好使用异常。

查看
功能或更新版本。您可以使用它来安装一个钩子,该钩子可以记住“看到”的消息,并在再次看到时将其报告为已处理。

遵循嵌入式主机的指导:


向下滚动以自定义断言的行为。(但一定要阅读所有其他内容。)

如果代码不需要是线程安全的,并且如果您只想“永远”忽略断言,因为它们在每次程序运行后都会被忽略,而不是永远,因为您在第一次忽略断言,并且在以后所有程序运行时都不会再次触发断言,然后只需将断言测试与默认设置为false的静态bool结合起来

void someFunc(...)
{
...
static bool bFireAssertion( false );

ASSERT( bFireAssertion || <your assertion test> );
...
}
void someFunc(…)
{
...
静态boolbfireAssertion(false);
断言(bFireAssertion | |);
...
}

然后,当您希望它停止触发时,在调试器中将bFireAssertion设置为true。因为它总是正确的,所以断言将短路并且不再评估您的测试。

好主意,但需要在gui中作为复选框。