gpt4 book ai didi

c++ - 关于Visual C++中预编译头文件的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:15 27 4
gpt4 key购买 nike

如果我将一个 header (a.h) 放入 stdafx.h 并且该 header 包含另一个 header (b.h),但在 stdafx.h 中未提及,那么每次有人包含 a.h 时都会访问 b.h 或者它是否作为啊?如果编译成a.h,有人直接包含b.h会怎样?这是否会被预编译?

我问这个问题的动机是,我正在尝试为我使用的软件优化 stdafx.h 文件的内容。重建和增量构建时间对我们都很重要。我想知道我是否可以简单地在所有 .cpp 文件中搜索 #include 指令并计算每个文件被包含的次数。通常包含的文件可能是 stdafx.h 文件的良好候选者。当然,如果我不仅要考虑包含哪些文件,还要考虑包含的文件包含哪些文件,这种策略是完全错误的。

我怀疑这是否重要,但我们使用的是 Visual Studio 2005。

最佳答案

a.h 和 b.h 将是预编译头的一部分,以后不需要包含它们。您只需要在需要 a.h 或 b.h 的地方包含 stdafx.h。如果您在 stdafx.h 之后显式包含 a.h 或 b.h(忽略 stdafx.h 之前的所有代码),那么它将不会被第二次编译(只是因为它们通常受 #pragma once 指令或定义),但如果您询问它,编译器将在硬盘上打开该文件,

顺便说一下,您应该知道,您可以使用多个预编译头文件(但每个 cpp 文件中最多使用一个)。

关于c++ - 关于Visual C++中预编译头文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324411/

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