在写代码的时候遇到了这样一个频繁的报错,由此牵出了一大块的知识,在查阅了资料和问了Deepseek后,汇总如下笔记。
简单讲解
什么是预编译头?
预编译头(PCH) 是一种优化技术,它让编译器提前编译常用的、稳定的头文件 <Windows.h>、<vector>、项目通用头文件等),并缓存编译结果。后续编译时,直接复用缓存,避免重复解析相同的头文件,从而大幅减少编译时间。
PCH 是如何生成的?
通常,项目中会有一个专门的 .cpp 文件(如 pch.cpp)负责生成 PCH。它一般只包含一行include "pch.h" // 或 pch-il2cpp.h
并设置为 /Yc(创建预编译头)。pch.h 里面包含了所有 频繁使用、较少改动的头文件
为什么 .cpp 的第一行必须是 #include “pch.h”
当编译器启用 PCH(/Yu)时,它会强制要求每个 .cpp 文件的第一行必须是 #include “pch.h”(或指定的 PCH 文件名)。如果第一行是其他代码(如注释、空行、其他 #include),编译器会报错。
我遇到的问题
我在我的代码中只要加入#include 就会提示,PCH 警告: 找不到合适的头停止点位置。未生成 IntelliSense PCH 文件。我直接把预编译关了,问题完美解决,反正我这是小项目,也节省不了什么编译时间,我相信我的7900X(直接头疼砍头)