assert()
assert()是一个宏
#include <assert.h>
void assert( int expression );
功能
当参数为真正常跳过
当参数为假先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行
用途
代码调试的错误检查,如空指针、函数返回错误等等
示例:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
int main( void )
{
FILE *fp;
fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件
assert( fp ); //所以这里不会出错
fclose( fp );
fp = fopen( "test1.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败
assert( fp ); //这里fp==0,执行会报错 //所以这里出错
fclose( fp ); //程序永远都执行不到这里来
return 0;
}
执行结果
main: Assertion `fp’ failed.
缺点:调用这个宏会增加程序开销
解决方式:在调试结束后增加宏开关,禁止使用这个函数
过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>