在一个大型Qt项目中,在每个文件中都包含了大量的Qt和项目头,很容易:
qbytearray.h
包含在qstring.h
中)。qstring.h
,并且不会抱怨)。我也读过这篇文章,即使是现代编译器it is better to include the files needed,也只有QtGui
。
这个规则似乎很简单:只包含您需要的所有内容,并且不依赖其他包含的文件,以防它们在将来发生变化(例如,qstring.h
不能再使用qbytearray.h
了,这对于项目文件也是如此),但这并不容易实现。Qt在这方面没有多大帮助,因为当您开始编写QStr...
时,它使用QString
自动完成并编译,您甚至都不想知道为什么会包括标题。
是否有一个Qt头依赖项列表,或者一个自动Qt工具,或者一个规则,或者什么东西来确保我已经选择了我需要的所有头,而没有其他的?这个问题对于C/C++来说是通用的,这是一种获得最佳头依赖的方法。
发布于 2018-10-12 10:35:56
尽量减少包含文件数量的经验规则如下:
.cpp
文件通常有一个相关联的头。必须首先包含该标头--它确保报头将自行编译,并且不会丢失任何依赖项。<QLabel>
,您将不需要<QFrame>
、<QWidget>
或<QObject>
。如果包括<QGraphicsView>
和<QLabel>
,您将不需要<QAbstractScrollArea>
、<QFrame>
、<QWidget>
和<QObject>
。诸若此类。QString
(包括QByteArray
)是一个实现细节,QString
的API不需要这样的包含。最小化编译后源文件数量的经验规则:
#include "foo.moc"
类型的每个foo.cpp
的末尾添加QObject
。.h
文件,没有必要在.h
和.cpp
之间将它们分开。https://stackoverflow.com/questions/52784165
复制