在我正在研究的一个项目中,用C89编写,我使用assert()
语句作为代码在我的开发机器上失败的一种方法,当一些预先定义的假设不成立时真正。但是,代码还包含一些错误处理代码,以便程序不会因生产环境中的断言失败而崩溃。
该项目使用GNU Autotools编译和分发源代码分发。
现在,我的问题是如何确保运行make dist
将从我的代码中删除所有断言然后生成分发tarball?
答案 0 :(得分:5)
来自维基百科上的assert.h:
程序员可以通过重新编译来消除断言 程序,无需更改源代码:如果宏NDEBUG是 在包含
<assert.h>
之前定义,assert()宏是 简单地定义为:
#define assert(ignore)((void) 0)