在C ++中使用masked断言

时间:2012-02-21 17:38:26

标签: c++ assert

我一直在向http://minisat.se/MiniSat.html包中添加一个模块。我有一堆asserts我现在意识到既没有被触发也没有被编译。它怎么样?我在网上搜索“蒙面断言”,但没有任何线索。可以是包的make规则以某种方式删除断言吗?即使assert(0)没有导致程序SIGABORT ......

2 个答案:

答案 0 :(得分:3)

断言宏取决于定义NDEBUG。

如果定义了NDEBUG,则断言定义为:

#define assert(ignore) ((void)0)

断言仅在调试模式下进行检查,但不在发布模式下进行检查。

答案 1 :(得分:2)

检查预处理器设置。当定义NDEBUG(即编译器命令行上的-DNDEBUG)时,将删除所有断言。