*assert还是if
在刚开始学习代码的时候,对于程序中检查程序有效性时有时用到assert,有时用if,感到非常困惑。比如,在多数的malloc函数后面对指针进行的操作都是用assert进行检查的,可能会造成一种错觉以为在malloc之后对申请空间的检测是用assert进行的,但可能也会看到用if对malloc进行判断并处理,到底是if还是assert呢?
以下是库中关于assert的定义,我将其他一些地方去掉了:
#ifdef NDEBUG
#define assert(_Expression) ((void)0)
#else
#define assert(_Expression) (void)( (!!(_Expression)) ||