C:从生产代码中删除断言

时间:2014-11-02 05:57:26

标签: c assert production-environment

在我正在研究的一个项目中,用C89编写,我使用assert()语句作为代码在我的开发机器上失败的一种方法,当一些预先定义的假设不成立时真正。但是,代码还包含一些错误处理代码,以便程序不会因生产环境中的断言失败而崩溃。

该项目使用GNU Autotools编译和分发源代码分发。

现在,我的问题是如何确保运行make dist将从我的代码中删除所有断言然后生成分发tarball?

1 个答案:

答案 0 :(得分:5)

来自维基百科上的assert.h

  

程序员可以通过重新编译来消除断言   程序,无需更改源代码:如果宏NDEBUG是   在包含<assert.h>之前定义,assert()宏是   简单地定义为:

     

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