c++ - ASSERT 也适用于 Release 模式?

标签 c++ std 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/

相关文章:

c++ - 为什么函数范围内不允许类前向声明​​?

c++ - 在 C++ 上使用 fflush

c++ - 错误 C2552 : 'pairs' : non-aggregates cannot be initialized with initializer list

java - 如何告诉assertJsonEquals在比较时忽略一个字段

C++ 快速 cin 输入流

c++ - 基类和派生类中的相同数据成员

c++ - 为什么 std::map<int, float> 不能使用 operator[]: error C2678?

c++ - 如何从新插入的对(到 map )返回引用对?

C++单元测试检查输出是否正确

assert - pytest 中的自定义断言应该覆盖标准断言