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