gpt4 book ai didi

c++ - 在应用程序中包含所有头文件

转载 作者:行者123 更新时间:2023-11-30 01:57:28 26 4
gpt4 key购买 nike

我最近查看了一个 C++ 应用程序的源代码,发现每个类都没有 #include 其所需的组件,而是 #include 一个“预编译.h”标题。在这个预编译 header 中,几乎包含了应用程序中的每个 header (不是全部,很明显,列表的长度和顺序是经过深思熟虑的)。从本质上讲,这意味着每个类都包含应用程序中的所有其他类。

这是明智的吗?为什么或为什么不?

最佳答案

通常,如果您编写一个应用程序,您应该只在 cpp 文件中包含真正需要的头文件。如果您有一个非常大的应用程序,您应该在 header 中使用前向声明并在 cpp 文件中包含必要的文件。这样一来,代码中的更改只会对 cpp 文件产生最小影响,因此编译器只需编译真正发生更改的内容。当涉及到不经常更改的库或代码时,情况可能会完全相反。文件名“Precompiled.h”已经是一个提示。编译器可以将头文件预编译为一个特殊的目标文件,通常称为 PCH 文件。这样一来,编译器就不必在每次编译时都解析每个包含。在大量嵌套包含时,这对编译速度有很大影响,因为没有很多文件要加载和解析,只有一个预解析文件。要存档,您必须将一个或多个 header 声明为一种用于构建预编译 header 的中心文件。不同编译器之间的操作方式不同。例如,Visual Studio 使用头文件“stdafx.h”作为头文件预编译的中心。因此,只有不经常更改的头文件应该包含在那里。此外,该文件必须首先包含在每个 cpp 文件中。这是因为编译器无法再检测到之前包含的include文件是否对预编译文件有影响。为避免这种情况,不允许在预编译包含之前包含。

回到你的问题。将每个文件都包含在一个头文件中以将其用作预编译头文件根本没有意义,因为它会影响预编译头文件的含义。

关于c++ - 在应用程序中包含所有头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18685181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com