Qt 断言Q_ASSERT的使用
Qt 断言 assert 使用
2023-09-14 09:05:11 时间
在使用Qt开发大型软件时,需要对程序进行调试,以确保程序内的运算结果符合我们的预期。在不符合预期结果时,就直接将程序断下,以便修改。
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。
Qt中断言函数有两个:
(1)
void Q_ASSERT(bool test)
当表达式为false时打印出警告消息。
示例:
1 #include <QCoreApplication>
2 #include <QDebug>
3
4 int main(int argc, char *argv[])
5 {
6 QCoreApplication a(argc, argv);
7
8 int c = 4;
9 int b = 3;
10 int d = c + b;
11
12 Q_ASSERT(d == 5);
13
14 qDebug() << "Finish.";
15
16 return a.exec();
17 }
结果:
编译调试,由于d不等于5,程序被断言掉。
同时,程序给出断言位置,为程序修改提供了便利。
(2)
void Q_ASSERT_X(bool test, const char *where, const char *what)
当test为false时,打印警告信息,警告信息包含自定义信息。
示例:
1 #include <QCoreApplication>
2 #include <QDebug>
3
4 int main(int argc, char *argv[])
5 {
6 QCoreApplication a(argc, argv);
7
8 int c = 4;
9 int b = 3;
10 int d = c + b;
11
12 // Q_ASSERT(d == 5);
13 Q_ASSERT_X(d == 5, "Error", "Error 1");
14
15 qDebug() << "Finish.";
16
17 return a.exec();
18 }
结果:
这两个断言仅在没有定义宏QT_NO_DEBUG的情况下有效。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- QT配置opencv_qt调用opencv
- Qt截图软件3-实现矩形区域截图
- C/C++ Qt 数据库SqlRelationalTable关联表
- C/C++ Qt TreeWidget 单层树形组件应用
- Qt官方示例-矢量变形
- 如何查看项目中使用的Qt版本
- Qt Qml 开发超高清 4K、8K 视频直播视频客户端
- 开发基于Qt与Linux的多平台开发(qtlinux)
- Qt在Linux下的强大开发体验(qt在linux开发)
- Linux下Qt源码编译实践(qt源码编译linux)
- Linux编译Qt库:从零开始(linux编译qt库)
- Linux Qt:快速下载指南(linuxqt下载)
- Linux下构建Qt程序步骤(linux打开qt)
- Qt Linux编译指南: 带你轻松编译Qt程序(qtlinux编译)
- Qt for Linux:下载与安装指南(qt下载linux)
- 从零开始:Qt 编译在 Linux 上的指南(qt编译linux)
- 在Linux下探索Qt程序的奥秘(linux下运行qt程序)
- Qt编程实现MySQL数据库调用(qt调用MySQL数据库)
- 入门Linux下Qt编程,掌握技巧!(linux下qt编程入门)
- Linux环境下如何卸载Qt应用(linux卸载qt)
- 如何在Linux上运行QT程序?(linux运行qt程序)