必威体育Betway必威体育官网
当前位置:首页 > IT技术

函数assert()详解

时间:2019-10-28 10:14:36来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

assert函数

函数assert()详解:

断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。

我们一般可以用在判断某件操作是否成功上。

摘录林锐博士高质量编程一书中相关内容

~~~~~~~~~~~~~~~~~~~~

程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用。

断言assert是仅在Debug版本起作用的宏,它用于检查“不应该”发生的情况。以下是一个内存复制程序,在运行过程中,如果assert的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert)。

//复制不重叠的内存块

void memcpy(void *pvTo, void *pvFrom, size_t size)

{

void pbTo = (byte ) pvTo;

void pbFrom = (byte ) pvFrom;

assert( pvTo != NULL && pvFrom != NULL );

while(size - - > 0 )

*pbTo + + = *pbFrom + + ;

return (pvTo);

}

assert不是一个仓促拼凑起来的宏,为了不在程序的Debug版本和Release版本引起差别,assert不应该产生任何副作用。所以assert不是函数,而是宏。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。

以下是使用断言的几个原则:

1)使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。

2)使用断言对函数的参数进行确认。

3)在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。

4)一般教科书都鼓励程序员们进行防错性的程序设计,但要记住这种编程风格会隐瞒错误。当进行防错性编程时,如果“不可能发生”的事情的确发生了,则要使用断言进行报警。

参考来源:

https://zhidao.baidu.com/question/201080430.html

文章最后发布于: 2017-08-16 16:23:41

相关阅读

matlab自定义函数的几种方法

1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;2、函数文件+子函数:定义一个具有多个自定义函数的M文件;3、Inline:无

Mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数

我们经常会面临要从数据库里判断时间,取出特定日期的查询。但是数据库里储存的都是unix时间戳,处理起来并不是特别友好。幸而MYSQL

高斯函数与高斯模糊

转载自:https://www.cnblogs.com/herenzhiming/articles/5276106.html 高斯函数以及在图像处理中的应用总结 1、一维高斯函数: a

一个被忽视的小点——函数的单调性

文章目录关于函数单调性的定理定理6.3定理6.4推论注意!!小点在这里例题解答关于函数单调性的定理 定理6.3 fff在III上可导 fff在II

linux 的sleep()、usleep()、nanosleep()函数的区别

其它时间、日期操作函数:http://blog.csdn.net/u011170660/article/details/38318765一下三种睡眠时间函数的区别:sleep()-------以

分享到:

栏目导航

推荐阅读

热门阅读