当前位置: 首页 > article >正文

qt相关宏

官网宏: https://doc.qt.io/qt-5/qtglobal.html
Q_UNLIKELY(expr): 向编译器提示封闭条件,expr,很可能评估为false。 使用该宏可以帮助编译器优化代码。
Q_LIKELY(expr): 向编译器提示封闭条件,expr,很可能评估为true。 使用该宏可以帮助编译器优化代码。
Q_BYTE_ORDER、 Q_BIG_ENDIAN、 Q_LITTLE_ENDIAN: 用于确定系统用于在内存中存储数据的字节顺序。即,您的系统是小端还是大端。
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
    ...
#endif
or
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
    ...
#endif

Q_ASSUME: void Q_ASSUME(bool expr): 使编译器假设expr是true。该宏通过向编译器提供有关编译器无法了解的条件的提示,对于改进代码生成非常有用。但是,不能保证编译器实际上会使用这些提示。
注意 :Q_LIKELY() 告诉编译器该表达式是可能的,但不是唯一的可能性。Q_ASSUME 告诉编译器这是唯一的可能性。
Q_ASSERT_X
#include <QtGlobal>
int divide(int a, int b)
{
    Q_ASSERT_X(b != 0, "divide", "division by zero");
    return a / b;
}
输出信息:ASSERT failure in divide: "division by zero", file div.cpp, line 7
Q_ASSERT: 如果出现以下情况,则打印包含源代码文件名和行号的警告消息test是false。 Q_ASSERT() 对于在开发过程中测试前置条件和后置条件非常有用。QT_NO_DEBUG如果在编译期间定义,它不会执行任何操作。
// File: div.cpp 
#include <QtGlobal> 
int divide(int a, int b) 
{     
    Q_ASSERT(b != 0);     
    return a / b; 
}
输出信息:ASSERT: "b != 0" in file div.cpp, line 7
QT_VERSION: 该宏扩展了 0xMMNNPP 形式的数值(MM = 主版本,NN = 小版本,PP = 补丁),指定 Qt 的版本号。例如,如果您针对 Qt 4.1.2 编译应用程序,则 QT_VERSION 宏将扩展为 0x040102。 您可以使用 QT_VERSION 来使用最新的 Qt 功能(如果可用)。
#if QT_VERSION >= 0x040100
    QIcon icon = style()->standardIcon(QStyle::SP_TrashIcon);#else
    QPixmap pixmap = style()->standardPixmap(QStyle::SP_TrashIcon);
    QIcon icon(pixmap);
#endif
编译宏: Q_CC_MSVC(Windows), Q_CC_INTEL, Q_CC_CLANG( Clang苹果 ), Q_CC_GNU(gcc)
库宏: Q_DECL_EXPORT , Q_DECL_IMPORT
操作系统平台宏: Q_OS_IOS, Q_OS_LINUXQ_OS_MACOS Q_OS_UNIX Q_OS_WIN32 Q_OS_WIN64 Q_OS_WIN 
芯片架构宏:
Q_PROCESSOR_X86  Q_PROCESSOR_X86_32 Q_PROCESSOR_X86_64
Q_PROCESSOR_ARM Q_PROCESSOR_ARM_V5 Q_PROCESSOR_ARM_V6 Q_PROCESSOR_ARM_V7
Q_PROCESSOR_MIPS  Q_PROCESSOR_MIPS_32  Q_PROCESSOR_MIPS_64

http://www.kler.cn/a/158598.html

相关文章:

  • Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题
  • 一文了解 inductive bias(归纳偏好)
  • React教程第二节之虚拟DOM与Diffing算法理解
  • ubuntu24.04网卡配置
  • 如何在 Ubuntu 上安装 Jupyter Notebook
  • Java项目实战II基于Java+Spring Boot+MySQL的共享汽车管理系统(源码+数据库+文档)
  • 深入理解JVM中的即时编译器(JIT)
  • AIGC发展史
  • 基于Springboot的社区医院管理服务系统(有报告)。Javaee项目,springboot项目。
  • springcloud整合Oauth2自定义登录/登出接口
  • WiFi模块ESP8266(超详细)---(含固件库、AP、STA、原子云使用)
  • Koa开发
  • 【算法集训】基础数据结构:一、顺序表(下)
  • jmeter资料
  • SpringBoot_02
  • CoreDNS实战(九)-性能压测
  • vue.js怎么保证计算精度
  • AIGC: 关于ChatGPT中Function Call的调用
  • 2024年口碑比较好的猫罐头有哪些?2024年口碑比较好的猫罐头盘点
  • Python自动化办公:PDF文件的加密与解密
  • 【剑指offer|图解|位运算】训练计划VI+撞色搭配
  • Java的严格计算部分
  • 解决ant-design-vue中Select组件v-model值为空字符串不显示placeholder的bug
  • windows使用YOLOv8训练自己的模型(0基础保姆级教学)
  • 代码随想录二刷 | 栈与队列 | 用队列实现栈
  • 华容道问题求解第一部分_思路即方案设计