我一直在向http://minisat.se/MiniSat.html包中添加一个模块。我有一堆asserts
我现在意识到既没有被触发也没有被编译。它怎么样?我在网上搜索“蒙面断言”,但没有任何线索。可以是包的make规则以某种方式删除断言吗?即使assert(0)
没有导致程序SIGABORT ......
答案 0 :(得分:3)
断言宏取决于定义NDEBUG。
如果定义了NDEBUG,则断言定义为:
#define assert(ignore) ((void)0)
断言仅在调试模式下进行检查,但不在发布模式下进行检查。
答案 1 :(得分:2)
检查预处理器设置。当定义NDEBUG
(即编译器命令行上的-DNDEBUG
)时,将删除所有断言。