assert.h头文件之断言

       在现实世界中,我们脑袋时刻都在判断对与错,对的事情我们会继续深入下去,而错的事情我们会马上停止,那么在编程开发中我们如何赋予程序这种判断事物对错的能力呢?其中一个方案就可以使用断言assert,我们最常用的地方就是在函数中检查形参的数据合法性。

1、函数所属头文件:

        assert.h

2、函数原型:

        void assert (int expression);

3、功能说明:

        assert的关键在于判断expression的逻辑真假,如果为false,就会在stderr上面打印一条包含“表达式,文件名,行号”的错误信息,然后调用abort结束整个程序。

4、程序实例:

#include <stdio.h>
#include <stdlib.h>
//#define NDEBUG		//可以禁止断言
#include <assert.h>

void main()
{
	//测试true情况:以写打开一个文件,不存在则创建新文件
	FILE *fpWrite = fopen("d:\\testWrite", "w");

	//不会出错
	assert(fpWrite != NULL);

	fclose(fpWrite);

	//测试false情况:以读打开一个文件,不存在会失败
	FILE *fpRead = fopen("d:\\testRead", "r");

	//会出错
	assert(fpRead != NULL);

	//程序调用abort退出,不会执行到此步
	fclose(fpRead);
	system("pause");
}
       当然,频繁的调用assert会影响系统性能,增加系统额外的开销,如果想禁用断言功能时,可以在assert.h头文件之前定义NDEBUG。


展开阅读全文

没有更多推荐了,返回首页