问题标签 [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.

0 投票
2 回答
957 浏览

c++ - 为什么 MS Visual Studio #include默认情况下在 stdafx.h 中?

MS Visual Studio 2017,来自 VisualC++ 类别的新 Windows 控制台应用程序项目。默认stdafx.h标题包括以下行:

在他们下面:

因为这个评论放在下面,而不是上面#include <stdio.h>,我倾向于认为stdio.h默认情况下包含它不是为了方便用户,他们可能#include无论如何都会这样做,但出于某种原因需要吗?stdio.h包含而不cstdio只是似乎支持这种解释的事实?

我对吗?我可以安全删除#include <stdio.h>吗?我问是因为我main函数的第一行是:

如果无论如何都在使用来自的设施,这显然是不正确stdio的,因为包含此标头会暗示。

1)我可以安全地删除说的那行#include <stdio.h>stdafx.h

2)我可以安全地打电话std::ios_base::sync_with_stdio(false)吗?

tchar.h3)默认情况下也包括在内的事实是否与此相关?

0 投票
0 回答
119 浏览

c++ - 预编译头文件中的漂亮计数器不起作用

为了解决由静态(反)初始化命令失败引起的问题,我尝试使用Nifty Counter 成语 aka Schwartz Counter。但是,我注意到,如果包含静态初始化程序的头文件包含在 Visual Studio 的预编译头文件中,它就不起作用。在这种情况下,我在调试器中看到,静态初始化程序的构造函数在另一个静态对象的构造函数之后调用。

如果我在之后声明一个额外的静态初始化程序#include "stdafx.h"或编辑预编译的头文件以不包含声明,它会按预期工作。

有什么想法可能导致这种情况吗?

编辑


我终于能够在一个新的虚拟项目中重现这个问题:

Foo.cpp

Foo.h

条形图.cpp

酒吧.h

标准数据文件

0 投票
1 回答
91 浏览

qt - 使用包含 Stdafx.h 的类时 Qt 程序编译错误

当我添加一些设备 oem 类(使用 stdafx.h)时,我的 qt 应用程序出现编译错误。

根据我从互联网上找到的内容,我将我的项目属性设置为“在共享 DLL 中使用 MFC”以解决错误,但是当我再次编译时,它会产生一些其他错误:

我尝试设置为使用 Unicode 字符集和使用多字节字符集,但没有解决问题。

0 投票
0 回答
1174 浏览

c++ - 在源代码中添加 Visual Leak Detector 的 vld.h 头文件用于内存泄漏

我正在尝试在我的 C++ 应用程序中使用 Visual Leak Detector(使用 Visual Studio 2013),在阅读了文档并修改Include DirectoriesLibrary Directories一个项目之后,我vld.h在我的一个文件中添加了标题cpp。正如文档中所写,我必须在源代码中的所有预编译头文件之后添加它。但是在我的源代码中添加标题后构建项目时,我收到以下错误:

[VLD COMPILE ERROR] #include "vld.h" should appear before #include <afxwin.h> in file stdafx.h

头文件位置消息

因此,当我将其添加到 stdafx.h 头文件中时,项目会构建,但我收到运行时错误消息: Unhandled exception at some_memory_location (vld_x64.dll) in product_debug_build.exe. Access violation reading location some_memory_location

访问冲突错误

当我将它放在我的任何cpp文件中的预编译头文件之前时,构建会跳过头文件的包含vld.h

跳过

但是当我构建整个解决方案时,我没有收到此消息,但是它不起作用(可能是因为我在预编译的标头之前添加了它?)。

我在这里做错了什么?

0 投票
2 回答
880 浏览

c++ - 是否应该从 C++ 中的静态库项目中删除 stdafx.h/.cpp?

虽然我的静态库工作正常,但我注意到默认设置带有以下文件:

  • 标准数据文件
  • stdafx.cpp
  • targetver.h

我不希望这个库很大。我希望尽可能地最小化。是否需要 stdafx.h/.cpp?

它们如何出现在我的项目中:

标准数据文件

stdafx.cpp

targetver.h

0 投票
1 回答
403 浏览

c++ - Visual Studio C++ 控制台应用程序

我最近不得不重新安装视觉工作室。以前,当我选择 Windows 控制台应用程序时,它会加载 #include "stdafx.h"。现在由于某种原因,它加载了#include“pch.h”和一个“hello world”程序。我只是希望它像以前一样默认加载 stdafx.h 和 int main { return 0} 。我需要 stdafx.h,这是我学校项目的要求,所以我真的希望它像以前一样作为默认值加载。任何帮助将不胜感激。我发布了它现在如何加载的图像。

Visual Studio pch.h

0 投票
2 回答
2981 浏览

c++ - 从 `stdafx.h` 更改为 `pch.h`

我克隆了一个包含 3 个项目的 repo、c++ 解决方案、一个控制台应用程序、.exe一个 dll 项目.dll和一个单元测试.dll。我不确定它是用什么版本的 VS 或编译器构建或创建的。

在我的机器上构建解决方案抛出错误

查找预编译头文件时意外结束。您是否伪造将 '#include "pch.h"' 添加到您的源代码中?

我在每个项目中创建pch.hpch.cpp根据另一个解决方案。

properties->c/c++->precompiled headers每个项目的

  • precompiled header = Create (/Yc)
  • precompiled header file = pch.h
  • precompiled header output file = $(IntDir)$(TargetName).pch

清除解决方案并删除Debug文件夹中的所有内容

现在构建解决方案抛出

致命错误 C1010:查找预编译头时文件意外结束。您是否伪造 t 将 '#include "stdafx.h"' 添加到您的源代码中?

  • 这也是 Azure 管道显示的错误。所以要接近我msbuild.exe从 VS 命令行使用的管道的构建过程。对我来说奇怪的部分是 VC++ 右键单击​​解决方案并构建,没有显示任何错误并构建项目,之后 msbuild.exe 也重新构建而没有错误。但是从 Debug 文件夹中删除所有内容并重新尝试 msbuild.exe 再次显示这些错误!

我应该如何强制解决方案中的所有项目使用stdafx.hpch.h

0 投票
0 回答
708 浏览

c++ - stdafx.h:致命错误:afxwin.h:没有这样的文件或目录(适用于 2018 VS 社区,但不适用于 VS 代码)

我从其他帖子中阅读了很多关于这个问题的信息,但我找不到任何特定于我的情况的内容。

我有一个在 VS 2017 社区中成功符合的 C++ 大型项目。我通过程序 VS 代码使用 SWIG 将同一个项目包装在 Go 中。

现在我在 Go 中的第 1 行收到错误,“package main”

ConnectionRecovery.h 看起来像这样:

在我的 stdafx.h 文件(包含在项目中的头文件)中,我发现

当我将鼠标悬停在 afxwin.h 上按 F12 键时,我可以打开文件的内容。因此,我假设代码在打开文件时应该没有问题。

这是 VS Code 的 json 文件

问题是什么?如果您需要详细说明,请告诉我。

0 投票
0 回答
943 浏览

c++ - afxv_w32.h 出现致命错误:已包含 WINDOWS.H

我正在尝试构建和运行一个旧的(并且非常大(大约 100 多个源文件和头文件))VS 项目。它最初是使用 VS2012 和 Windows 7 编译的,所以我使用相同的设置(实际上,Win 7 和 10 都是)。我是VS的新手,所以请多多包涵。我的问题是它无法构建这个致命错误:

我发现很多人都遇到过这个问题。例如,

但是,我找不到适合我的解决方案。首先,据我所知,windows.h不包含在我们编写的代码中,而是包含在afxv_w32.h文件中。我有一个utils.h包含有用函数原型的文件,其中包括一个stdafx.h文件(如下)。通过“显示包含”选项,我发现stdafx.h包含afxwin.h,最终包含afxv_w32.h提到的错误;但是,似乎并非始终都会引发错误。例如:

utils.h正在该项目的许多文件中使用;但是,我使用警卫

只处理一次(如果我理解正确的话)。来自“utils.h”的片段:

我的 stdafx.h 文件:

我应该在哪里检查或更改以解决此问题?如果需要更多信息,请告诉我。

0 投票
1 回答
6573 浏览

c++ - 如何修复错误代码 E1696?在 Windows Visual Studio 2019 中

所以我最近下载了 Windows Visual Studio 2019。我有一段时间没有编程了,我想用一个基本的“hello world”程序来刷新自己。但由于某种原因,我的 Stdafx.h 标头出现错误。错误代码是 E1696“无法打开源文件“stdafx.h””有人知道如何解决吗?