发布版本中是否禁用断言?

时间:2016-04-25 14:28:38

标签: c++ linux g++ assert

在'release'build中是否禁用了断言?

-O0的{​​{1}},-O3-g等可选标记如何影响其行为?

2 个答案:

答案 0 :(得分:7)

只有在包含assert()头文件之前定义宏<cassert>时,才会禁用NDEBUG标头中的

<cassert>。另请参阅这些docs

使用gcc / g ++,最简单的方法是在调用编译器时在命令行上定义NDEBUG宏:

g++ -DNDEBUG ... other args...

优化标志和类似标志之类的参数不会禁用断言。

答案 1 :(得分:0)

从手册页:

  

如果在assert.h最后一次定义宏NDEBUG   包含,宏assert()不生成代码