问题标签 [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++ - 为什么 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.h
3)默认情况下也包括在内的事实是否与此相关?
c++ - 预编译头文件中的漂亮计数器不起作用
为了解决由静态(反)初始化命令失败引起的问题,我尝试使用Nifty Counter 成语 aka Schwartz Counter。但是,我注意到,如果包含静态初始化程序的头文件包含在 Visual Studio 的预编译头文件中,它就不起作用。在这种情况下,我在调试器中看到,静态初始化程序的构造函数在另一个静态对象的构造函数之后调用。
如果我在之后声明一个额外的静态初始化程序#include "stdafx.h"
或编辑预编译的头文件以不包含声明,它会按预期工作。
有什么想法可能导致这种情况吗?
编辑
我终于能够在一个新的虚拟项目中重现这个问题:
Foo.cpp
Foo.h
条形图.cpp
酒吧.h
标准数据文件
qt - 使用包含 Stdafx.h 的类时 Qt 程序编译错误
当我添加一些设备 oem 类(使用 stdafx.h)时,我的 qt 应用程序出现编译错误。
根据我从互联网上找到的内容,我将我的项目属性设置为“在共享 DLL 中使用 MFC”以解决错误,但是当我再次编译时,它会产生一些其他错误:
我尝试设置为使用 Unicode 字符集和使用多字节字符集,但没有解决问题。
c++ - 在源代码中添加 Visual Leak Detector 的 vld.h 头文件用于内存泄漏
我正在尝试在我的 C++ 应用程序中使用 Visual Leak Detector(使用 Visual Studio 2013),在阅读了文档并修改Include Directories
了Library 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
。
但是当我构建整个解决方案时,我没有收到此消息,但是它不起作用(可能是因为我在预编译的标头之前添加了它?)。
我在这里做错了什么?
c++ - 是否应该从 C++ 中的静态库项目中删除 stdafx.h/.cpp?
虽然我的静态库工作正常,但我注意到默认设置带有以下文件:
- 标准数据文件
- stdafx.cpp
- targetver.h
我不希望这个库很大。我希望尽可能地最小化。是否需要 stdafx.h/.cpp?
它们如何出现在我的项目中:
标准数据文件
stdafx.cpp
targetver.h
c++ - Visual Studio C++ 控制台应用程序
我最近不得不重新安装视觉工作室。以前,当我选择 Windows 控制台应用程序时,它会加载 #include "stdafx.h"。现在由于某种原因,它加载了#include“pch.h”和一个“hello world”程序。我只是希望它像以前一样默认加载 stdafx.h 和 int main { return 0} 。我需要 stdafx.h,这是我学校项目的要求,所以我真的希望它像以前一样作为默认值加载。任何帮助将不胜感激。我发布了它现在如何加载的图像。
c++ - 从 `stdafx.h` 更改为 `pch.h`
我克隆了一个包含 3 个项目的 repo、c++ 解决方案、一个控制台应用程序、.exe
一个 dll 项目.dll
和一个单元测试.dll
。我不确定它是用什么版本的 VS 或编译器构建或创建的。
在我的机器上构建解决方案抛出错误
查找预编译头文件时意外结束。您是否伪造将 '#include "pch.h"' 添加到您的源代码中?
我在每个项目中创建pch.h
并pch.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.h
或pch.h
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 文件
问题是什么?如果您需要详细说明,请告诉我。
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 文件:
我应该在哪里检查或更改以解决此问题?如果需要更多信息,请告诉我。
c++ - 如何修复错误代码 E1696?在 Windows Visual Studio 2019 中
所以我最近下载了 Windows Visual Studio 2019。我有一段时间没有编程了,我想用一个基本的“hello world”程序来刷新自己。但由于某种原因,我的 Stdafx.h 标头出现错误。错误代码是 E1696“无法打开源文件“stdafx.h””有人知道如何解决吗?