1.  Qt 全局宏定义

Qt版本号:

QT_VERSION :  (major << 16) + (minor << 8) + patch

检测版本号:

QT_VERSION_CHECK(major, minor, patch)((major<<16)|(minor<<8)|(patch))

当使用命名空间时的一些宏定义:

namespace QT_NAMESPACE {} //命名空间定义

# define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name

# define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE;

# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {

# define QT_END_NAMESPACE }

# define QT_BEGIN_INCLUDE_NAMESPACE }

# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE {

# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE

# define QT_END_MOC_NAMESPACE

# define QT_FORWARD_DECLARE_CLASS(name) /

QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE /

using QT_PREPEND_NAMESPACE(name);

# define QT_FORWARD_DECLARE_STRUCT(name) /

QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE /

using QT_PREPEND_NAMESPACE(name);

Q_GLOBAL_STATIC(type, name)用于定义一个全局的静态变量(线程安全的).用它来初始化一个对象指针(函数指针).

Q_GLOBAL_STATIC_WITH_ARGS(type, name, arguments):同上,可带参数.

Q_UNUSED():通常用于某个函数的参数,表明该参数未在方法体中使用.

常用数据类型:

qint8, quint8, qint16, quint16, qint32, quint32, qint64, quint64, qlonglong(=int64), qulonglong(=uint64)

quintptr, qptrdiff, 作为指针是一样大的.如:

sizeof(void *) == sizeof(quintptr)

&& sizeof(void *) == sizeof(qptrdiff)

Qt有用的类型定义:uchar, ushort, uint, ulong

实用内联函数:qAbs(), qRound(), qRound64(), qMin(), qMax(), qBound();

try-catch宏:

#ifdef QT_NO_EXCEPTIONS

#  define QT_TRY if (true)

#  define QT_CATCH(A) else

#  define QT_THROW(A) qt_noop()

#  define QT_RETHROW qt_noop()

#else

#  define QT_TRY try

#  define QT_CATCH(A) catch (A)

#  define QT_THROW(A) throw A

#  define QT_RETHROW throw

#endif

每个QT_TRY对应一个QT_CATCH,不要在catch语句块中使用异常实例.

调试相关函数:

qDebug(), qWarnig(), qCritical(), Q_ASSERT()

其他一些函数:

该宏用于定义某个类,禁止拷贝

#define Q_DISABLE_COPY(Class) /

Class(const Class &); /

Class &operator=(const Class &);

qgetenv(), qputenv(), qIntCast(double 或float). qsrand(uint seed), qrand()

2. Qt的内存管理函数

void *qMalloc(size_t size);

void qFree(void *ptr);

void *qRealloc(void *ptr, size_t size);

void *qMallocAligned(size_t size, size_t alignment)

void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment)

void qFreeAligned(void *ptr)

void *qMemCopy(void *dest, const void *src, size_t n);

void *qMemSet(void *dest, int c, size_t n);

注: 数组下标为-1的地址对于数组来说是越界访问了,但是这个地址是有意义的.这个地址就是所申请的数组存储空间的首地址的向前偏移一个单位(也就是偏移一个当前数组类型所对应的字节数)所对应的地址。这个地址由于没有跟着数组空间一起初始化,所以其中的数据是不确定的.如果是正在被系统或者其他应用程序使用中的地址空间,那么可以被访问,其中的数据的意义取决于被系统或者其他应用程序所写入的数据,但是访问后,有可能会引起系统或者其他应用程序异常。如果是没有被使用的地址,那么就是一个野地址,那么其中的数据是随机的,无意义的

3. 环境变量设置函数

qputenv():与putenv()基本类似,由于VC2005后废除了putenv()函数,所有定义了此函数,在VC环境中调用替代的函数,其他平台调用标准C库函数putenv().

qgetenv():获取某个环境变量的值.

4.自定义输出函数

QtMsgHandler qInstallMsgHandler(QtMsgHandler h)

其中:typedef void (*QtMsgHandler)(QtMsgType, const char *);

利用该函数可定制自己的调试信息输出.

5. 断言

Q_ASSERT(bool test):当断言失败时,打印出警告信息,包含了源码文件名和行号.

void Q_ASSERT_X(bool test, const char *where, const char *what)

void Q_CHECK_PTR(void *pointer):检测非法指针,如果指针为0,打印警告信息.

6.系统信息类QsysInfo

Qt全局宏和变量的更多相关文章

  1. QT全局宏变量的实现

    qt中如何实现定义一个宏,在整个工程中都可以实现呢?下面我来写一个亲测的例子: pro中添加如下宏定义代码: DEFINES += HELLO=\"$$PWD/\" DEFINES ...

  2. Android.mk 常用宏和变量

    android ndk开发有一个重要的文件 Android.mk,他虽然重要,但是对它进行深入介绍的文档却比较的少,这里将对Android.mk中常用的宏和变量进行说明: 由于这一部分的内容多,资料零 ...

  3. wex5 教程 之 图文讲解 全局可观察变量与登陆状态全局控制

    一 先说说,这两个概念是什么意思 全局可观察变量?没听说过,只听过全局变量,那你out了,因为我要充分发挥绑定技术来控制页面部局,组件的隐藏与显示,文字内容,样式改变.看我博文大家知道,我想用绑定技术 ...

  4. C++全局和静态变量初始化

    转自:http://www.cnblogs.com/zhenjing/archive/2010/10/15/1852116.html 对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的 ...

  5. iOS开发——路径篇&混编路径与全局宏路径

    混编路径与全局宏路径 最近在做东西的时候有一个地方要用到一个第三方库的,但是目前swift版的还没有找到,自己又不想写(其实是不会写),所以就想到了混编,但是中间出现了好多问题,其中印象最深的就是桥接 ...

  6. QT全局热键(用nativeKeycode封装API,不跨平台)

    在网上找了很长时间,大家都提到了一个QT全局热键库(qxtglobalshortcut),支持跨平台.在这篇文章中,我将只展示出windows平台下全局热键的设置. 这里提供的方法是在MyGlobal ...

  7. iOS用全局宏的概念理解xcode中的设置 preprocessor macros

    ios有没有全局宏,或者在工程属性里设置宏? 比如我设置了一个宏叫IOS, 在所有/整个工程的代码里这个宏都是有效的. ------解决方案-------------------- 在工程的设置属性里 ...

  8. SW4STM32 全局宏定义

    /************************************************************************************ * SW4STM32 全局宏 ...

  9. iOS Swift3 用全局“宏”时要注意的问题

    当你需要定义一个APP全局“宏”来调用 UserDefaults.standard里存储的值的时候, 一定要将这个“宏”定义为计算属性,否则你得到的值只会在APP启动的时候计算一次. 示例如下: va ...

随机推荐

  1. hdu 3966 Aragorn's Story(树链剖分+树状数组/线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966 题意: 给出一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路 ...

  2. Linux程序设计综合训练之简易Web服务器

    1.功能需求: (1)学习网络套接字编程.HTPP协议.Web服务器等知识: (2)设计一简单Web服务器,提供静态网页浏览服务功能. 2.实现的功能: (1)C语言实现基于socket的Web服务器 ...

  3. pprint模块介绍

    简介pprint模块 提供了打印出任何Python数据结构类和方法. 模块方法: 1.class pprint.PrettyPrinter(indent=1,width=80,depth=None, ...

  4. oracle导库

    cmd窗口直接输入导库命令即可,不需要进入sqlplus C:\Documents and Settings\Administrator> imp username/pass@orcl file ...

  5. C#设计模式(4)-抽象工厂模式

    引言 上一篇介绍了设计模式中的简单工厂模式-C#设计模式(3)-工厂方法模式,本篇将介绍抽象工厂模式: 抽象工厂模式简介 抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依 ...

  6. 多模字符串匹配算法之AC自动机—原理与实现

    简介: 本文是博主自身对AC自动机的原理的一些理解和看法,主要以举例的方式讲解,同时又配以相应的图片.代码实现部分也予以明确的注释,希望给大家不一样的感受.AC自动机主要用于多模式字符串的匹配,本质上 ...

  7. 开源的API集成测试工具 v0.1.2 - 增强体验

    Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起管理Api. 详细介绍请看: http://www.cnblogs.com/br ...

  8. 201521145048《Java程序设计管理》第一周学习总结

    1. 本周学习总结 学习并了解Java的发展与历史 在网上视频中学习Java 了解并区分JVM JRE JDK 将java与已学语言做比较,发现相同处 2. 书面作业 Q1.为什么java程序可以跨平 ...

  9. python学习笔记1.2

    在python中%的用处是求余数,而不是除数.

  10. Sublime text 3编辑python时出现方框的解决办法

    如图: 经过探究发现,出现这个问题的原因是我在Sublime text 3中,安装了Anaconda这款用来增强Python 编辑的插件导致了标题即图片中的问题,解决方法也非常简单,如果是因为使用an ...