c++ - Visual Studio 中的 Hello World C++ 应用程序 - 关于预编译标头不同的问题
问题描述
为了在虚幻引擎中创建游戏,我才刚刚开始学习 c++ 的旅程。
我有一些很棒的教程视频,我希望跟随整个系列,但我已经被第一个困住了:[
我确实对 C# 和 Java 有相当多的了解。
基本上,在教程中他们制作了一个 HelloWorld!Visual Studio 2017 中的 Windows 控制台应用程序。他们代码中的第一行是 '#include "stdafx.h"' ,在我的代码中有 '#include "pch.h"'
我知道这些预编译的头文件让我可以访问命名空间中的特定代码/函数,但是这些代码存储在哪里?为什么如果我将包含 stdafx.h 添加到我的标题中,它会给出一个错误,说源代码无法打开?
解决方案
当您想要为多个 .cpp(翻译单元文件)编译相同的标头时,预编译标头只是一种缓存编译的方法。
所以如果你有
a.cpp
b.cpp
这些包括,比如说,
<windows.h>
<iostream>
然后,将只对这些包含标头进行一次编译(对于第一个翻译单元),其他翻译单元将重用编译,只要它们包含完全相同的内容 - 这就是它们停止到特定文件名的原因。按照约定,此文件名为 stdafx.h
所以通常我有一个 stdafx.cpp,我在其中指定“创建 PCH”,其他人使用它。
推荐阅读
- debugging - 'NODE_OPTIONS' 未被识别为内部或外部命令 - 仍然是一个问题
- jquery - 无法使用 .then() 语句中的数据更新元素 .attr()
- c# - 为什么这个翻转精灵功能不起作用?
- ruby-on-rails - 如何在错误轨道“警告:299 Elasticsearch 内置安全功能未启用。如果没有身份验证,您的集群可以...”中解决此问题
- vue.js - 当我运行 yarn serve 时,为什么我的 Vue 应用程序无法在依赖项的缓存中打开 scss 文件?
- amazon-web-services - AWS Neptune 读取器终端节点无法工作
- kubernetes - 如何在同一个 kubernetes pod 中的容器之间共享文件
- azureservicebus - 如何在不使用 Send 和 RequestAddress 的情况下,根据消息内容将两条相同类型的消息发布到不同的 worker 实例?
- python - DevOps 管道在导入 azureml.core 时运行 python 脚本错误
- reactjs - React Native - 证明内容不起作用