Qt中断言的使用

28 篇文章 2 订阅

       错误的处理常用来检查有害的输入数据,断言用来检查代码的的bug,Qt中提供了两个断言的宏Q_ASSERT()和Q_ASSERT_X().下面简单讲述下两个宏的使用:

1. Q_ASSERT(bool)
例如:
// File: div.cpp

 #include <QtGlobal>

 int divide(int a, int b)
 {
     Q_ASSERT(b != 0);
     return a / b;
 }

  Q_ASSERT宏判断bool值 为假的时候通过 qFatal() 函数输出错误信息 
  ASSERT: "b == 0" in file div.cpp, line 7

2. Q_ASSERT(bool, device, log)  
例如: 
 // File: div.cpp

 #include <QtGlobal>

 int divide(int a, int b)
 {
     Q_ASSERT_X(b != 0, "divide", "division by zero");
     return a / b;
 }

 Q_ASSERT_X宏判断bool值为假时,通过 qFatal() 函数输出错误信息
 ASSERT failure in divide: "division by zero", file div.cpp, line 7 


可以看出这两个宏中一个是自定义log信息和设备信息 而一个则默认Qt自带的log信息

这两个宏生效的前提是没有定义 QT_NO_DEBUG 

注意:如果变量参数来自于系统内部,则可使用断言
          如果来源于外部,则应该使用错误代码来检查和处理非法的数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值