一.条件编译含义:

有时候出于对程序代码优化的考虑.希望只对其中一部分内容进行编译.此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译。(名词解释来源于百度百科)

二.在Qt中的应用:

通常用于跨平台程序中。

三.条件编译如何在qt中实现:

直接举例进行直观的理解。

例1:

1.在.main文件中加入以下代码

#ifdef znwqDebug()<<"zangniwer";
#elseqDebug()<<"not define zangniwer";
#endif

编译运行看到效果如下,说明没有满足编译条件

2.接下来修改代码。

(1)在.pro文件中添加如下代码

DEFINES += znw

接下来点击Qt Creator中的“构建”->“执行qmake”->“重新构建项目”

执行完上述操作后,编译运行可看到结果如下。

(2)若在.main上面进行预定义,会产生同样的效果。

#define znw

但是pro文件里面定义可以完成一些更高级的事情。比如不同的工程文件包含不同的.pri文件,不同的.pri文件里面定义不同的条件,可以在编译的时候根据不同的条件对同一段代码编译出来不同的效果。

例2:

Qt中有很多已经为我们定义好的宏,可以直接用。

1.在main.cpp文件中添加如下代码

#ifdef QT_NO_DEBUGqDebug()<<"i am release";
#elseqDebug()<<"i am debug";
#endif

编译运行后可以看到结果为:

2.编译release版本

可以看到编译结果为:

四.总结:

通过条件编译,可以控制程序编译产生不同的结果,使得代码的复用性得到提高。

Qt学习(四)条件编译相关推荐

  1. Qt学习(四)---实例涂鸦画板mspaint

    Qt学习(四)-实例涂鸦画板mspaint 一.Qt图形绘制 自己在Qt开源社区在自学yafeilinux前辈的<Qt快速入门系列教程>中的图形篇,结合所学的知识,可以做一个涂鸦板实例 二 ...

  2. Qt学习(四):qt读写文件

    知识点 QFile读写文件 QFileInfo获取文件信息 QDataStream读写文件 QTextStream读写文件 内存文件QBuffer读写文件 结果演示 widget.h #ifndef ...

  3. QT学习四之界面布局

    紧接第三回,我们以及完成了UI界面的背景图片资源的上传,在我们日常使用的APP或者其他应用程序时,我们都可以进行窗口化并且可以自由调整窗口大小,而我们的UI界面虽然也可以调整窗口大小,但是我们的标签并 ...

  4. Qt 学习(四) —— QButtonGroup抽象容器

    目录 0. QButtonGroup简介 1. 创建QButtonGroup 2. 成员函数与信号 3. 示例 3.1. 为按钮组添加按钮 3.2. 为按钮设置id 3.3. 按钮组中按钮的互斥状态 ...

  5. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  6. QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决

    QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决 问题: 1.解决方法一: 2.解决方法二: 3.解决方法三: 4.解决方法四: 结果显示: Qt5+MSVC编译 中文字符显示乱码. ...

  7. [记录]学习QT学习之路2第四天

    今天学习内容对应<<QT学习之路2>>第18到23部分,主要是有关于QT事件这一部分的内容(=_=真是看到我快吐了,感觉这本书不适合我这种初学者). 先放出思维导图 难点总结 ...

  8. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  9. Qt学习笔记之数据库

    一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...

  10. QT学习笔记(六):Qt5主窗口框架示例

    QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...

最新文章

  1. spring 的MAVEN配置
  2. 创业初期,处理好事情的优先级
  3. php mysql数据备份命令_MySQL数据备份与恢复的相关操作命令
  4. 牛客练习赛24 C PH试纸
  5. 快速上手,教你开发第一个基于 AutoML 的量化投资决策应用
  6. 如何在苹果Mac上的多个空间中工作?
  7. 2010年下半年信息系统监理师下午题的答题参考五
  8. IT运维的五大基础知识
  9. python读取csv文件出错:显示utf-8编码问题该怎么解决
  10. java newtonsoft.json_Newtonsoft.Json(Json.Net)学习笔记
  11. JAVA微博文章内容抓取_关于微博数据抓取的实践
  12. html5毕业设计程序,网页毕业设计制作流程
  13. html5创建桌面快捷方式,iOS APP创建桌面快捷方式
  14. 示例正则表达式验证6位数字密码
  15. 程序员 - 段子图片
  16. python中的库有哪些餐厅_推荐一些实用的的 Python 库
  17. TranUnet 复现[Errno 2] No such file or directory: ‘./model/TU_Synapse224/TU_pretrain_ViT-B_16_skip3_ep
  18. Excel用自动填表快速实现一维表到二维表的转换
  19. python爬虫----汽车之家的汽车论坛的最新精华帖
  20. 共享充电语音提醒功能如何实现?

热门文章

  1. matlab打开bmp,Matlab 读取文件夹中所有的bmp文件
  2. 【金猿人物展】凯捷咨询史凯:未来要充分利用数据要素和数字化生产力打造企业升维新优势...
  3. 前后端分离学习笔记(5) ---[表单的增删改操作;以及为管理员上传头像]
  4. 3dmax:3dmax三维动画之粒子系统简介、基本场景之详细攻略
  5. 物联网技术NB-IOT的网络和应用场景
  6. 选择自建商城和盈利模式。
  7. 2020年11月CKA新题考试心得体会
  8. 乡村认可的水泵推荐:【博山潜水泵】
  9. Python 【西瓜视频】的短视频自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、微信视频号等平台的视频自动化同步发布
  10. win10 安装虚拟机提示 主IP地址显示网络信息不可用