ASSERT 也适用于发布模式吗?

bec*_*cko 2 c++ assert std

在哪里可以找到ASSERT类似于assert(...)标准 C++ 库中的宏(在 中定义的宏<cassert>),但它也适用于发布模式?或者说我应该怎么写呢?

我喜欢assert(...)它,因为它会自动打印源文件中断言失败的行以及断言表达式。我希望发布模式中ASSERT也能提供这些功能(如果可能的话)。

sky*_*ing 5

基本上assert是一个计算表达式的宏,如果失败则打印一些内容,然后打印aborts。写一些类似的东西并不难。

#define ASSERT(x) do { if( !(x) ) { printfunc( #x ); abort(); } } while(0)
Run Code Online (Sandbox Code Playgroud)

然后您可以修改它以满足您的要求。例如,您可能不希望处于abort发布模式。您还可以调整打印输出(仅包含您认为有用的信息),以便获取您将使用的文件和行信息__FILE__以及__LINE__宏(顺便说一句,#x定义中的扩展为包含表达式的字符串文字x)。