C /C++标准库 - <cassert> (assert.h)

1. 概述

头文件assert.h的唯一目的是提供宏assert的定义。可以在程序中关键的地方使用这个宏来进行断言。如果一处断言被证明非真,我们希望程序在标准错误流输出一条适当的提示信息,并且使执行异常终止
但其不是编写产品代码的最好方式,断言只能在调试程序的时候其左作用。可以使用NDEBUG宏来取消断言。

2. Macro(宏定义)

定义说明
assertvoid assert (int expression);宏assert向程序中加入诊断。当执行它的时候,如果表达式为假,assert宏就按照实现定义的格式向标准的错误文件写入关注与之歌特定调用的失败信息,然后调用abort函数终止程序。

3. assert的使用

3.1 打开和关闭断言的方法:

  • 打开断言:
#undef NDEBUG 
#include<assert.h>
  • 关闭断言:
#define NDEBUG 
#include<assert.h>

3.2 assert使用注意事项

  1. 不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
  2. 断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值.
  3. 程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用。断言assert是仅在Debug版本起作用的宏
  4. 建议程序中使用assert的地方:
    • 空指针检查。例如,针对一个函数的参数进行空指针检查。你可以这样使用:assert (pointer != NULL);,产生的错误会像这样:Assertion ‘pointer != ((void *)0)’ failed。这样,当出现空指针时,你的程序就会退出,并很好的给出错误信息。
    • 检查函数参数的值。例如,如果一个函数只能在它的一个参数foo为正值的时候被调用,你可以在函数开始时这样写:assert (foo > 0);,这将帮助你检测函数的错误使用,这也给源代码阅读者很清晰的印象,那就是在这里对函数的参数值有限制。

4. 参考文献

  1. http://www.cplusplus.com/reference/cassert/
  2. http://www.cnblogs.com/moondark/archive/2012/03/12/2392315.html
  3. http://baike.baidu.com/link?url=jQlYRMpmp0D96orBvpUKGQh1qEgpYgEXkxrThiFZRXav-88JBJv00pyJCC8UiUkSbCu98yJ7A-0myKsjPsz00a
  4. http://blog.csdn.net/supreme42/article/details/7021518
  • 16
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值