assert宏的原型定义在<assert.h>
中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include <assert.h>
void assert( int expression );
#assert的作用
对于现行表达式expression,如果真值为假,向stderr打印错误信息,调用abort结束程序
int main( void )
{
FILE *fp;
fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件
assert( fp ); //所以这里不会出错
fclose( fp );
fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败
assert( fp ); //所以这里出错
fclose( fp ); //程序永远都执行不到这里来
return 0;
}
#缺点 已放弃使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。 #注意事项
-
最好每次只检测一个条件,当有多个条件时,即使能够检测错误,但是无法判断具体出错的式子
-
不能使用改变环境的语句,如
assert(++i < 100)
-
assert和后面的语句应空一行,以形成逻辑和视觉上的一致感。