问题标签 [stdafx.h]
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.
c++ - 有没有办法在 VC++ 中使用预编译的头文件而不需要 stdafx.h?
我有一堆需要编写单元测试的遗留代码。它在任何地方都使用预编译的头文件,因此几乎所有的 .cpp 文件都依赖于 stdafx.h,这使得为了编写测试而打破依赖关系变得困难。
我的第一直觉是删除所有这些 stdafx.h 文件,这些文件在大多数情况下包含#include 指令,并根据需要将这些 #include 直接放在源文件中。
这将使得有必要关闭预编译的头文件,因为它们依赖于像 stdafx.h 这样的文件来确定预编译的头文件停止的位置。
有没有办法在没有 stdafx.h 依赖项的情况下保留预编译的头文件?有没有更好的方法来解决这个问题?
c++ - 为什么 stdafx.h 以它的方式工作?
像往常一样,当我的大脑在弄乱我自己无法弄清楚的事情时,我会向你们寻求帮助:)
这次我一直想知道为什么 stdafx.h 会这样工作?据我了解,它做了两件事:
- 包括我们 可能(?)使用并且很少更改的标准标题
- 在不再预编译代码时用作编译器书签。
现在,这两件事对我来说似乎是两个非常不同的任务,我想知道他们为什么不做两个单独的步骤来照顾它们?对我来说,让#pragma-command 来做书签似乎是合理的,并且可以选择在 windows.h 的行中添加一个头文件来包含常用的头文件......这让我进入了我的下一个要点:为什么我们被迫通过 stdafx.h 包含常用的标头?就个人而言,我不知道我使用的任何经常使用的标头,我还没有为自己做包含 - 但也许这些标头对于 .dll 生成是必需的?
提前谢谢
.net - StdAfx.h 中的“Afx”是怎么回事?
我只是好奇 Afx 代表什么。那么 FxCop 中的 Fx 呢?
c++ - stdafx.h:我什么时候需要它?
我看到了很多代码,包括 stdafx.h。说,我不想要预编译的头文件。我将自己手动包含所有必需的系统标头。在那种情况下,我应该知道我需要在哪里有其他充分的理由stdafx.h
吗?
c++ - 在跨平台代码中处理 stdafx.h
我有一个基于 Visual Studio C++ 的程序,它使用预编译的头文件 ( stdafx.h
)。现在我们正在使用 gcc 4.x 将应用程序移植到 Linux。
问题是如何在两种环境中处理预编译的头文件。我用谷歌搜索但无法得出结论。
显然我想离开stdafx.h
Visual Studio,因为代码库非常大,而且预编译的头文件会增加编译时间。
但问题是在 Linux 中要做什么。这是我发现的:
- 保持
stdafx.h
原样。gcc 编译代码的速度比 VC++ 快得多(或者它只是我的 Linux 机器更强大...... :)),所以我可能对这个选项感到满意。 使用此处的方法-
/li>stdafx.h
看起来像(USE_PRECOMPILED_HEADER
仅针对 VS 设置):使用此处的方法- 编译 VC++
/FI
以隐式包含stdafx.h
在每个 cpp 文件中。因此,在 VS 中,您的代码可以轻松切换以在没有预编译头文件的情况下进行编译,并且无需更改任何代码。
我个人不喜欢依赖,而且混乱stdafx.h
正在推动一个大的代码库。因此,这个选项对我很有吸引力——在 Linux 上你没有stdafx.h
,同时仍然能够在 VS 上打开预编译的头文件/FI
。- 在 Linux 上
stdafx.h
仅编译为预编译头文件(模仿 Visual Studio)
你的意见?有没有其他方法来处理这个问题?
c++ - 关于 Visual C++ 中预编译头的问题
如果我将一个标头 (ah) 放入 stdafx.h 并且该标头包含另一个在 stdafx.h 中未提及的标头 (bh),那么每次有人包含 ah 时都会访问 bh 还是将其编译为 ah 的一部分?如果编译成ah,直接包含bh会怎样?这会被预编译吗?
我提出这个问题的动机是我正在尝试为我正在使用的软件优化 stdafx.h 文件的内容。重建和增量构建时间对我们都很重要。我想知道是否可以简单地在所有 .cpp 文件中搜索#include 指令并计算每个文件被包含的次数。经常包含的文件可能是 stdafx.h 文件的良好候选者。当然,如果我不仅要考虑包含哪些文件,还要考虑包含的文件包含哪些文件,那么这种策略完全是假的。
我怀疑这很重要,但我们使用的是 Visual Studio 2005。
conditional-compilation - 为什么我无法#ifdef stdafx.h?
我试图在我的 .cpp 文件中包含 2 个特定于平台的stdafx.h文件,但是当我尝试 #ifdef 时编译器不满意。
您可能想知道为什么我在 Mac 代码中使用 stdafx.h,但目前这并不重要 :)。
当我尝试在 Windows 上编译代码时,我收到:Fatal Error C1018。我尝试用#ifdef 将其他头文件包含在同一个文件中,编译器很高兴。因此,看起来 Windows 不喜欢 stdafx.h 被 #ifdef-ed,或者 Windows 只允许#include stdafx.h 成为文件中的第一行。
所以我的问题是,为什么?
吉
c++ - 使用 Boost 时的内存泄漏检测
我想使用 _CRTDBG_MAP_ALLOC 获取内存泄漏信息,尤其是文件和行号,但最后我没有得到它们。我只得到这样的东西:
{130} 0x00695128 处的普通块,16 字节长。数据:<\E Pi > 5C A5 45 01 02 00 00 00 01 00 00 00 E8 50 69 00
我已经看到这应该在所有包括之前:
有些人建议在所有源文件中包含所有内容后添加此内容:
但是,在 main.cpp 中,如果我显式添加内存泄漏,它会在我的输出中与行号一起出现!所以它有效,但并非适用于所有...
当我使用 Boost 库时,我怀疑内存泄漏都发生在这些......(shared_ptr?)的某个地方。但是如何知道这些内存泄漏是从哪里来的呢?
.net - c++ 致命错误 c1083 项目以前很好,现在怎么办?
我有一个 (com) c++ 项目,它使用 (.net) c++ dll。该项目正在编译并运行正常。
现在,我所做的只是对 dll 进行更改,并且在重新编译我的(com)项目时,我收到了一个致命错误 c1083-无法打开包含文件 stdafx.h。
这意味着什么?
c++ - stdafx.h 的目的
该文件的目的是什么以及预编译头stdafx.h
文件的含义是什么?