#include <qobject>和#include <qobject.h>之间的区别

时间:2015-09-16 05:57:08

标签: c++ qt

使用#include< QObject >#include< qobject.h >之间有什么区别吗?

这两个似乎都有效,所以必须有一些理由说明为什么#include< QObject >是首选的?

4 个答案:

答案 0 :(得分:2)

任何没有.h扩展名的标准Qt头文件都保证在下一个Qt版本和其他平台(如标准接口头)上是正确的。 qobject.h以及其他扩展名为.h的Qt头文件只是最终可能不适合你的实现头文件。

Use 
    #include <QObject>
and not
    #include <qobject.h>

答案 1 :(得分:1)

从用户的角度来看,它们是相同的(我相信Qt为了方便而添加了两者,但不要引用我的话)。

但是,首选写#include <QObject>,因为通常人在包含头文件时会使用引号,而在包含&#34;内置&#34;时会使用括号。文件(C ++ STL,Qt builtins等)。

在大多数情况下,两者是可以互换的。但是,使用括号(使用大多数编译器)将首先搜索系统头,然后搜索本地目录中的头文件,而引号通常首先搜索本地目录。

请注意,这取决于编译器。

例如,您通常会看到包含的内容:

#include <map>
#include <string>

#include "foreignlibrary.h"

答案 2 :(得分:1)

文件Qt/include/QtCore/QObject仅包含:

#include "qobject.h"

因此两种方式在功能上是相同的。从C ++预处理器的角度来看,包括QObject在内是一个间接层。但是,这与现代计算机没有太大区别。

Qt开发人员鼓励我们#include <QObject>。由于未记录的功能可能会在将来的版本中转移,因此您应该总是更喜欢记录在未记录的方式上的方法。

答案 3 :(得分:1)

不同之处在于记录并保证有效的方式是:

#include <QClass>

任何其他包含Qt类标头的方式都可能会破坏Qt的任何未来版本。 现在的工作原理并不重要。如果您不遵守规则,Qt维护者可以自由地破坏您的代码。

// W R O N G
#include <QtCore/QClass>
#include <qclass.h>

以下内容是正确的,并且是包含整个模块声明的简单方法,包括依赖模块:

#include <QtWidgets>