C++入门——assert的使用

ASSERT()是什么

ASSERT()一般被称为断言,是一个调试程序时经常使用的宏。它被定义在<assert.h>头文件中,通常用于判断程序中是否出现了非法的数据,在程序运行时,它计算括号内的表达式的值。如果表达式的值为false(0),则程序报告错误,终止运行;如果不为0,则继续执行后面语句。

例如:

ASSERT(n != 0);
k = 10/n;

ASSERT()与assert()

  1. ASSERT()只在Debug版本中有,在Release版本中则被忽略

  2. ASSERT()是宏,而assert()是ANSIC标准中规定的函数,它与ASSERT()的功能类似,但是可以应用在Release版本中。

assert()的缺点

频繁地调用会极大地影响程序的性能,增加额外开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入#define NDEBUG来禁用assert()调用。

assert()使用的注意事项

  1. 在函数开始处检验传入参数的合法性

  2. 每个assert()一般只检验一个条件,而不对多个条件进行检验,因为当同时检验多个条件时,如果断言失败,则无法直观地判断是哪个条件失败

  3. 不要使用assert()作为实现函数逻辑的语句,因为assert()一般在Release版本中,就禁用了

  4. 并非所有的assert()都能代替过滤条件,对于有的地方,assert()无法达到条件过滤的目的

  5. 一般在编程的时候,为了形成逻辑和视觉上的一致性,会将assert()与后面的语句之间空一行隔开

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值