precompiled-headers相关内容

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

我有一堆需要编写单元测试的遗留代码.它在任何地方都使用预编译的头文件,因此几乎所有 .cpp 文件都依赖于 stdafx.h,这使得为了编写测试而打破依赖关系变得困难. 我的第一反应是删除所有这些 stdafx.h 文件,这些文件大部分都包含 #include 指令,并根据需要将这些 #include 直接放在源文件中. 这将使得有必要关闭预编译头文件,因为它们依赖于 stdafx.h ..

如何在 Android NDK 项目中使用预编译头文件?

我正在将一个大型 C++ 项目从 Visual Studio 移植到 Android 的 GCC.由于文件数量众多,编译时间非常缓慢.我想设置一个预编译的头文件,但我找到了 GCC 文档 混乱. 我有 stdafx.h 文件,它应该是预编译头文件的基础,并且是所有 .cpp 源中的第一个包含文件.有人知道我需要在 Android.mk 中添加什么来完成这项工作吗? 解决方案 遇到了同 ..
发布时间:2022-01-10 23:56:09 移动开发

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

我在网上看到了一些(旧的)帖子,内容是关于在 CMake 中对预编译头文件的一些支持进行黑客攻击.他们似乎都有点无处不在,每个人都有自己的做法.目前最好的方法是什么? 解决方案 有一个名为“Cotire"的第三方 CMake 模块' 自动为基于 CMake 的构建系统使用预编译头文件,并且还支持统一构建. ..
发布时间:2021-12-26 21:47:50 C/C++开发

在预编译头文件中放什么?(MSVC)

预编译头文件的最佳候选者是什么?我可以将 STL 和 Boost 标头放在那里吗,即使它们有模板?这会减少编译时间吗?另外,减少编译时间的最佳 IDE 设置是什么? 解决方案 快速回答:STL 和 Boost 头文件确实属于预编译头文件,即使这些头文件定义了模板类. 在生成预编译头文件时,编译器会解析头文本(一项重要任务!),并将其转换为针对编译器进行优化的二进制格式. 即使在 ..
发布时间:2021-12-22 18:58:36 C/C++开发

意外的文件结尾错误

我希望你能帮助我,因为我不知道发生了什么.我在尝试将 Beecrypt 库添加到我的项目时遇到以下错误: 致命错误 C1010:查找预编译头文件时出现意外的文件结尾.您是否忘记在源代码中添加“#include "stdafx.h""? 实际上我并没有忘记将#include "stdafx" 添加到我的源代码中.编译器指出错误位于此 .cxx 文件的末尾: #define BEECRY ..

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

我有一个包含许多 Visual C++ 项目的解决方案,所有项目都使用 PCH,但有些项目针对特定项目的需要打开了特定的编译器开关. 这些项目中的大多数在各自的 stdafx.h(STL、boost 等)中共享同一组头文件.我想知道是否可以在项目之间共享 PCH,这样我就不必为每个项目编译每个 PCH,我可以拥有一个解决方案中的大多数项目都可以使用的通用 PCH. 似乎可以在项目设置中 ..
发布时间:2021-12-22 18:27:34 C/C++开发

stdafx.h 的用途

文件 stdafx.h 的用途是什么?预编译头是什么意思? 解决方案 stdafx.h 是一个文件,由Microsoft Visual Studio IDE 向导,描述了两个标准系统和项目特定的包含文件经常使用但很少使用的不断变化.兼容的编译器(例如,Visual C++ 6.0 和更新版本)将预编译这个文件以减少总体编译时间. Visual C++ 将在编译之前不要编译任何东西 ..
发布时间:2021-12-22 18:14:07 C/C++开发

使用 GCC 预编译头文件

有没有人成功地使用 GCC 获得预编译头文件?我的尝试没有运气,我没有看到很多关于如何设置它的好例子.我已经尝试过 cygwin gcc 3.4.4 并在 Ubuntu 上使用 4.0. 解决方案 我确实取得了成功.首先,我使用了以下代码: #include #include 使用命名空间标准;使用命名空间 boost::xpressive;//一个简单的正则测试int main(){s ..
发布时间:2021-12-18 23:10:51 C/C++开发

GCC 和预编译头文件

阅读这篇不错的文章(预编译头文件),我对这些如何在现实生活中实际工作有一些疑问.更具体地说,我怎么知道我需要在以下场景中触发预编译头的重建: 我决定在我的一个 .cpp 文件中 #define 改变预处理器解释一些已经包含在我的预编译头文件中的头文件的方式 我在我的一个 .cpp 文件中包含了另一个头文件,它#define是一个特定的预处理器指令,它改变了预处理器解释已包含在预编译头文件中 ..
发布时间:2021-12-18 22:29:17 C/C++开发

可以从 Xcode 项目中删除 Prefix.pch 文件吗?

Xcode 项目自动生成 Prefix.pch 文件.当我删除此文件并尝试构建时,我收到构建错误,提示“*_Prefix.pch"文件丢失. 是否必须使用 Prefix.pch 文件才能使用 Xcode 进行编译? 如何在没有 Prefix.pch 文件的情况下进行构建? 解决方案 在 Xcode 中,转到目标的构建设置(Command-Option-E,构建选项卡)并取消选中 P ..
发布时间:2021-09-30 19:11:35 其他开发

VS2008 win32 项目默认值 - 删除默认预编译头文件

我已经尝试了所有选项,试图找到一种方法让 IDE 允许我创建一个没有预编译头的新 win32pject.我已经阅读了这个论坛上的每个帖子,里面都有“precpmpiled headers"字样,我得到的最接近的是: 预编译头 使用 2008 pro(不是 express,虽然行为似乎相似)我去: 文件 -> 新建 -> 项目 这将打开“新建项目"对话框,我在其中选择“Vis ..
发布时间:2021-09-18 20:25:29 C/C++开发

预编译头

我有一个使用 Visual C++ 6 的示例项目(不是我的).我正在尝试将其转换为 Visual Studio 2008. 旧项目使用的是预编译头文件.现在的问题是: 什么是预编译头? 因为旧项目使用的是预编译头文件.我还将在 Visual Studio 2008(新项目)中使用它们.但是我收到错误消息,说“您是否忘记包含 stdafx.h",为了解决这个问题,我在每个源文件中 ..

禁用 C++ 预编译头文件

在 Visual Studio 2015 中,我有一个带有以下错误的 C++/CLI 项目: “致命错误 C1010:在查找预编译头文件时出现意外的文件结尾.您是否忘记在源代码中添加“#include“stdafx.h"?" 我在项目选项中关闭了预编译头文件,但它一直给我同样的错误.我什至删除了预编译头文件的名称,但它仍然显示 "stdafx.h". 编辑:是的,每个源文件都没有 ..
发布时间:2021-09-18 19:45:26 C/C++开发

为什么我需要在 C++ 中的所有文件中包含预编译头?

如果即使在空的 .cpp 中也不包含 stdafx,我会收到此错误 fatal error C1010: 查找预编译头时文件意外结束.您是否忘记在源代码中添加“#include "StdAfx.h""? 为什么我需要将它包含在虚拟文件中? 解决方案 如果您使用它们,那么您必须包含它们.但是您可以在项目属性中关闭它们. 但是,推荐使用它们的方法是从命令行“强制包含"PCH,以便文件 ..
发布时间:2021-09-18 19:41:12 C/C++开发

预编译头文件和 Visual Studio

有没有办法设置 Visual Studio 解决方案参数,以便它只创建预编译头而不构建整个解决方案.具体来说,它是一个庞大的 C++ 解决方案,本身就有许多项目. 谢谢. 解决方案 这里是 一篇文章 描述了好处以及如何设置它.如果您有较大的项目,那么几次点击和额外的磁盘空间绝对值得. 文章说需要将stdafx.h添加到所有源和头文件中;这是不正确的.添加到源代码就足够了 - 确 ..
发布时间:2021-09-18 19:14:04 C/C++开发

是否应该在项目范围的预编译头文件中重新包含已包含的内容?

我有一个预编译的头文件stdafx.h,可用于项目中的所有源文件.因此,stdafx.h中的所有标头在项目中的所有代码文件中均可用. 我不确定的是是否要在预编译头文件中重新包含那些东西.你们怎么看? 例如 stdafx.h #pragma一次#include my_class.h #pragma一次#include//是否重新添加, ..
发布时间:2021-05-15 21:00:40 C/C++开发

C3859:超出了PCH的虚拟内存范围

我不时(并非每次)都收到此错误消息,我在混合模式项目中进行了编译(编辑:对不起,我在这里并没有明确指出:我的意思是“重建").而且Visual Studio告诉我“使用'-Zm114'或更高版本的命令行选项重新编译".原则上没问题,我就是按照VS告诉我的. 但是目前,这有两个问题: 为什么每次都不会发生,我要进行重建吗?如果我理解正确,则编译器在编译项目时会耗尽内存.因此,如果我进行重 ..

项目中的每个C ++标头都作为预编译的标头

通常的方法是在一个项目中包含一个最常见的包含项的预编译头文件. 问题是,它太大或太大了.当它太小时,它不会覆盖所有已使用的标头,因此必须在每个模块中一遍又一遍地处理这些标头.当它太大时,由于以下两个原因会大大降低编译速度: 当您更改预编译标题中包含的标题中的某些内容时,该项目需要太频繁地重新编译. 预编译头太大,因此实际上将其包含在每个文件中会减慢编译速度. 如果我预先编译了项 ..
发布时间:2021-04-23 19:56:39 C/C++开发

在预编译头文件中包含resource.h是个好主意吗?

VS-IDE将//{{NO_DEPENDENCIES}}写入资源头文件. 此注释实际上是一项功能,可以防止(不必要)重建包含资源头的cpp文件. 但是,就像MSDN中所述的 一样,这可能导致产生“不良副作用". 在我们的项目中,我们确实将resource.h包含在stdafx.h中以进行预编译.不幸的是,如果资源文件发生更改,则无法重新编译预编译的头文件. 如果删除了NO_DEP ..