首页 > 解决方案 > Visual Studio 中的 Hello World C++ 应用程序 - 关于预编译标头不同的问题

问题描述

为了在虚幻引擎中创建游戏,我才刚刚开始学习 c++ 的旅程。

我有一些很棒的教程视频,我希望跟随整个系列,但我已经被第一个困住了:[

我确实对 C# 和 Java 有相当多的了解。

基本上,在教程中他们制作了一个 HelloWorld!Visual Studio 2017 中的 Windows 控制台应用程序。他们代码中的第一行是 '#include "stdafx.h"' ,在我的代码中有 '#include "pch.h"'

我知道这些预编译的头文件让我可以访问命名空间中的特定代码/函数,但是这些代码存储在哪里?为什么如果我将包含 stdafx.h 添加到我的标题中,它会给出一个错误,说源代码无法打开?

标签: c++visual-studio

解决方案


当您想要为多个 .cpp(翻译单元文件)编译相同的标头时,预编译标头只是一种缓存编译的方法。

所以如果你有

a.cpp
b.cpp

这些包括,比如说,

<windows.h>
<iostream>

然后,将只对这些包含标头进行一次编译(对于第一个翻译单元),其他翻译单元将重用编译,只要它们包含完全相同的内容 - 这就是它们停止到特定文件名的原因。按照约定,此文件名为 stdafx.h

所以通常我有一个 stdafx.cpp,我在其中指定“创建 PCH”,其他人使用它。


推荐阅读