使用#include< QObject >
和#include< qobject.h >
之间有什么区别吗?
这两个似乎都有效,所以必须有一些理由说明为什么#include< QObject >
是首选的?
答案 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>