assert宏:
assert宏其实很重要,对于调试程序来说。
assert宏的原型定义在assert.h中
#include<assert.h>
void assert(int exp);
assert的作用是计算表达式exp,如果其值为假(即为0),那么它先打印一条出错信息,然后通过调用abort来终止程序运行。
assert就是为了确定一个条件为真,如果不为真,则给出出错信息,并终止程序。所以assert也叫断言。
例子:
#include<assert.h>
#include<stdio.h>
void main()
{
int i=100;
assert(i!=100);
}
这里assert(i!=100);就是确保i不等于100,程序才可以继续运行,否则程序终止,给出出错信息。
使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,例如: