<分区>
我在哪里可以找到 ASSERT
类似于 assert(...)
来自标准 C++ 库(在 <cassert>
中定义的那个)的宏,但它也适用于 Release 模式?或者我应该怎么写?
我喜欢assert(...)
因为它会自动打印断言失败的行我的源文件,以及断言表达式。我希望 Release模式中的这些功能(如果可能)ASSERT
<分区>
我在哪里可以找到 ASSERT
类似于 assert(...)
来自标准 C++ 库(在 <cassert>
中定义的那个)的宏,但它也适用于 Release 模式?或者我应该怎么写?
我喜欢assert(...)
因为它会自动打印断言失败的行我的源文件,以及断言表达式。我希望 Release模式中的这些功能(如果可能)ASSERT
最佳答案
基本上 assert
是一个计算表达式的宏,如果失败则打印一些内容然后 abort
。写类似的东西并不难。
#define ASSERT(x) do { if( !(x) ) { printfunc( #x ); abort(); } while(0)
然后您可以修改它以满足您的要求。例如,您可能不想在 Release模式下中止
。您还可以调整您的打印输出(仅包括您认为有用的信息),以获取文件和行信息,您将使用 __FILE__
和 __LINE__
宏(顺便说一句定义中的 #x
扩展为包含表达式 x
) 的字符串文字。
关于c++ - ASSERT 也适用于 Release 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142835/