Qt包含文件

时间:2014-05-25 17:14:20

标签: c++ qt include

我与某人进行了讨论,告诉我Qt对包含文件做的事情并不好,因为我在我的代码中采用了相同的策略。

让我们以QApplication为例,当您想要包含QApplication时,您应该这样做:

#include <QApplication>

QApplication是一个没有扩展名的文件,其中包含:

#include "qapplication.h"

唯一的缺点是看它在项目中创建了更多文件。除此之外,我认为它只有优势。

所以我的问题是,为什么这是好主意还是坏主意?

2 个答案:

答案 0 :(得分:2)

使用没有扩展名的头文件不是一个好主意,因为它很难搜索头文件(* .h或* .hpp),这使得识别文件内容变得更加困难(例如,如果你的编辑器依赖扩展来选择正确的语法高亮模式)。如上所述,它还会导致项目中有更多文件。

此外,Qt完全使用该惯例,因为聪明的程序员不会这样做。这意味着您的标题不会与新的Qt标题发生冲突。

所以我认为使用带扩展名的头文件会以某种方式将自定义头文件与Qt文件分开。它使Qt的标题更清晰,更清晰,哪一个是你的。

答案 1 :(得分:2)

我认为这主要是个人品味问题。不同的项目使用不同的风格Qt选择了这种风格。

1)它基本上部分匹配标准库包括没有头扩展,虽然CamelCase。在这方面有所不同,尽管标准库现在不允许使用后缀版本。

2)它还可以帮助在包含不同主类的标题中包含类。见这个例子:

#include <QFoo>

其中QFoo在qbar.h中定义,因为主类是QBar,但是有另一个类放在同一个头中。

  

唯一的缺点是看它在项目中创建了更多文件。

它不会创建比需要更多的文件,因为这些文件可以像在Qt项目中一样动态生成。在这种情况下,它不会使源树混乱,并且会被放入构建目录中,或者至少放在一个不会妨碍您的方式的单独位置。目前,这是通过Qt项目中的 syncqt 完成的。