问题标签 [precompiled-headers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
71377 浏览

c++ - 使用 GCC 预编译的头文件

任何人都成功地获得了与 GCC 一起使用的预编译头文件吗?我的尝试没有运气,也没有看到很多关于如何设置它的好例子。我已经尝试过 cygwin gcc 3.4.4 并在 Ubuntu 上使用 4.0。

0 投票
13 回答
78576 浏览

c++ - 在 CMake 中使用预编译的头文件

我在网上看到了一些(旧)帖子,这些帖子是关于在 CMake 中将一些对预编译头文件的支持结合在一起的。他们似乎都有点到处都是,每个人都有自己的做事方式。目前最好的方法是什么?

0 投票
9 回答
6745 浏览

c++ - 有没有办法在 VC++ 中使用预编译的头文件而不需要 stdafx.h?

我有一堆需要编写单元测试的遗留代码。它在任何地方都使用预编译的头文件,因此几乎所有的 .cpp 文件都依赖于 stdafx.h,这使得为了编写测试而打破依赖关系变得困难。

我的第一直觉是删除所有这些 stdafx.h 文件,这些文件在大多数情况下包含#include 指令,并根据需要将这些 #include 直接放在源文件中。

这将使得有必要关闭预编译的头文件,因为它们依赖于像 stdafx.h 这样的文件来确定预编译的头文件停止的位置。

有没有办法在没有 stdafx.h 依赖项的情况下保留预编译的头文件?有没有更好的方法来解决这个问题?

0 投票
4 回答
4611 浏览

c++ - 为什么 stdafx.h 以它的方式工作?

像往常一样,当我的大脑在弄乱我自己无法弄清楚的事情时,我会向你们寻求帮助:)

这次我一直想知道为什么 stdafx.h 会这样工作?据我了解,它做了两件事:

  • 包括我们 可能(?)使用并且很少更改的标准标题
  • 在不再预编译代码时用作编译器书签。

现在,这两件事对我来说似乎是两个非常不同的任务,我想知道他们为什么不做两个单独的步骤来照顾它们?对我来说,让#pragma-command 来做书签似乎是合理的,并且可以选择在 windows.h 的行中添加一个头文件来包含常用的头文件......这让我进入了我的下一个要点:为什么我们被迫通过 stdafx.h 包含常用的标头?就个人而言,我不知道我使用的任何经常使用的标头,我还没有为自己做包含 - 但也许这些标头对于 .dll 生成是必需的?

提前谢谢

0 投票
3 回答
1486 浏览

c++ - C++ 中是否有跨平台的预编译头文件框架/方法?

我想知道其他人在 C++ 中实现跨平台(linux 和 windows)预编译头文件的经历。我正在考虑 Visual Studio 允许您使用 stdafx.h 文件做什么,这些文件可以通过预编译全面使用的通用头文件(std/boost/etc 头文件)来显着缩短大量 C++ 代码的编译时间。有没有办法通过某种框架或其他东西跨平台实现这一点?

你有过什么样的经历?

编辑

我并不是真的要分享实际生成的 pch,我更感兴趣的是可以生成 pch 的框架,以及在特定平台上编译时的等价物,比如 gcc。

0 投票
6 回答
12600 浏览

c++ - 在 Visual Studio 中的项目之间共享预编译头文件

我有一个包含许多 Visual C++ 项目的解决方案,所有项目都使用 PCH,但有些项目针对特定项目的需要打开了特定的编译器开关。

这些项目中的大多数在各自的 stdafx.h(STL、boost 等)中共享相同的标题集。我想知道是否可以在项目之间共享 PCH,这样我就可以拥有一个解决方案中的大多数项目都可以使用的通用 PCH,而不是为每个项目编译每个 PCH。

似乎可以在项目设置中将 PCH 的位置指定为共享位置,所以我有预感这可以工作。我还假设使用共享 PCH 的所有项目中的所有源文件都必须具有相同的编译器设置,否则编译器会抱怨 PCH 和正在编译的源文件之间的不一致。

有没有人试过这个?它有效吗?

一个相关的问题:这样的分片 PCH 是否应该过度包容,还是会影响整体构建时间?例如,共享 PCH 可能包含许多广泛使用的 STL 标头,但某些项目可能只需要<string><vector>. 当优化器不得不丢弃所有由 PCH 拖入项目的未使用的东西时,使用共享 PCH 节省的时间是否必须在构建过程的稍后阶段归还?

0 投票
6 回答
67731 浏览

c++ - stdafx.h:我什么时候需要它?

我看到了很多代码,包括 stdafx.h。说,我想要预编译的头文件。我自己手动包含所有必需的系统标头。在那种情况下,我应该知道我需要在哪里有其他充分的理由stdafx.h吗?

0 投票
4 回答
10323 浏览

c++ - 在预编译的头文件中放什么?(MSVC)

预编译头文件的最佳候选者是什么?我可以将 STL 和 Boost 标头放在那里,即使它们有模板?这会减少编译时间吗?另外,减少编译时间的最佳 IDE 设置是什么?

0 投票
5 回答
43685 浏览

c++ - 为什么使用预编译头文件 (C/C++)?

为什么要使用预编译头文件?


阅读回复,我怀疑我对他们所做的事情有点愚蠢:

0 投票
3 回答
14304 浏览

c++ - 错误 C1854:无法覆盖在目标文件中创建预编译头期间形成的信息

咨询 MSDN 为我提供了以下信息:

在为同一文件指定 /Yc(创建预编译头)选项后,您指定了 /Yu(使用预编译头)选项。某些声明(例如包括 __declspec dllexport 的声明)使此无效。

在这种情况下,我们使用的是 dllexport 和预编译的头文件。有没有人遇到过这种情况并知道任何解决方法?非常感谢任何有助于阐明这个问题的意见。

谢谢