C 语言 assert.h 库 笔记

      assert.h中,就只定义了一个用来调试的宏assert。

1. NDEBUG宏,用来表示是否是DEBUG状态,当该宏定义时,assert的宏被定义为:
#define assert(ignore) ((void)0)
((void)0)是空语句,不会产生任何代码。写成这种形式的原因是,比如一个(assert(0<x), x<y)的表达式,会比较有效,取自 《The Standard C Library》。
2. assert宏:它被定义为宏,当表达式为真时,什么也不做。否则输出调试信息,具体实现C99并未规定,同时,C99指出,若将assert定义为调用函数,那么是调用结果是未定义的。

参考资料:

1.C99 规范

你可能感兴趣的:(c,语言,library)