gpt4 book ai didi

c++ - 如何从多线程应用程序中的断言失败中优雅退出

转载 作者:太空狗 更新时间:2023-10-29 23:08:33 25 4
gpt4 key购买 nike

在多线程应用程序中,我使用以下 ASSERT 宏在调试单元测试期间捕获编码和数据错误

#ifndef NDEBUG
#define ASSERT(condition, message) \
do { \
if (! (condition)) { \
std::cerr << "Assertion `" #condition "` failed in " << __FILE__ \
<< " line " << __LINE__ << ": " << message << std::endl; \
std::exit( EXIT_FAILURE ); \
} \
} while (false)
#else
#define ASSERT(condition, message) do { } while( false )
#endif

它基本上满足了我的需要,除了严重需要更换的讨厌的 std::exit( EXIT_FAILURE ); 之外。在其当前形式中,我得到了双重删除和各种混淆断言消息的脏话。

如何从多线程应用中的断言失败中正常退出

也许我应该从断言中抛出,然后从 main() 中抛出 catch + return(1)?(我不确定这样做的后果,所以我完全接受各种选择)

最佳答案

虽然它又快又脏,但 _exit 在大多数平台上都能完美运行。

关于c++ - 如何从多线程应用程序中的断言失败中优雅退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092224/

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