包括应用程序中的所有头文件
Including all header files in application
我最近正在查看一个C++应用程序的源代码,发现每个类都没有#include
其所需的组件,而是#include
"Precompiled.h"标头。在这个预编译的标头中包含了应用程序中几乎所有的标头(不是全部,很明显列表的长度和顺序是故意的)。从本质上讲,这意味着每个类都包含在应用程序中的其他每个类。
这是明智的吗?为什么或为什么不呢?
通常,如果您编写应用程序,则应仅包含 cpp 文件中真正需要的头文件。如果你有一个非常大的应用程序,你应该在头中使用前向声明,并在 cpp 文件中包含必要的文件。这样,代码中的更改仅影响 cpp 文件的最小值,因此编译器只需编译真正更改的内容。当涉及到不经常更改的库或代码时,情况可能会完全颠倒。文件名"Precompiled.h"已经是一个提示。编译器可以将标头预编译为特殊目标文件,通常称为 PCH 文件。这样,编译器就不必在每个编译时解析每个包含。在繁重的嵌套包含上,这对编译速度有很大影响,因为只有一个预解析文件,而不是要加载和解析的许多文件。要存档,您必须将一个或多个标头声明为用于构建预编译标头的中心文件。如何做到这一点在不同的编译器之间有所不同。例如,Visual studio使用头文件"stdafx.h"作为头文件预编译的中心。因此,只有头文件应该包含不经常更改的头文件。此外,该文件必须首先包含在每个 cpp 文件中。这是因为编译器无法再检测之前包含的包含文件是否可能对预编译文件产生影响。为避免这种情况,不允许在预编译的包含之前包含。
回到你的问题。将每个文件包含在一个头文件中以将其用作预编译头根本没有意义,因为它与预编译头文件的含义相悖。
非常糟糕的主意。
对于.cpp文件,仅包含最小数量的 #include 文件。
因此,当其中一个改变品牌(或道德等价物)时,将不需要重新编译整个批次。
在开发过程中节省大量时间。
PS 优先使用前向声明而不是 #include
- 使用VerQueryValue检索应用程序的文件描述
- 在安卓应用程序中使用.exe文件
- 为什么从文件获取图标时应用程序有时会崩溃?
- make 命令创建 .file,但不创建应用程序文件
- 如何在Windows窗体应用程序中打开txt文件并将行导入文本框
- 在不打开应用程序的情况下在MinGW c++中播放声音(.wav)文件
- 将文件从 iOS 应用程序加载到 C++ 对象中/<iostream>iOS 上的问题
- 从Qt应用程序执行MSI文件
- 根据应用程序是否已自动化显示不同的 QML 文件
- 在应用程序启动时读取文件
- 如何从二进制文件中获取应用程序的版本号?
- 如何在 CentOS 7 中为应用程序生成具有完整回溯C++的核心转储文件
- 如何将SQLite c文件(合并)与cpp应用程序链接?
- 从头开始为使用Qt的应用程序制作简约的构建文件
- VS Express 2015 Win10 应用程序 - ifstream 无法打开文件
- Linux 从永远在线的应用程序中创建和删除文件
- 如何通过C++库读取与安卓应用程序打包的文件?
- 如何将 QML 文件分配给主窗口/应用程序
- 程序'main.exe'运行失败:指定的可执行文件不是此操作系统平台的有效应用程序
- 如何在windows中以编程方式关闭打开的文件/应用程序