PCH或stdafx预编译头导致的找不到声明的问题

PCH或stdafx预编译头导致的找不到声明的问题

明明类和函数都已经声明了,声明定义都存在,检查过好几遍,但是编译器还是报错

错误	C2065	“init”: 未声明的标识符

刚开始想从文件编码的角度入手,查看是不是编码出现了问题,因为编码问题也会导致类似的情况出现。

但是文件编码也都是一样的,并不是编码出现异常。

找了很久,后来无意间,改动了头文件include代码区,导致代码include顺序发生了变化,竟然意外编译通过了!!!

#include "OiPCH.hpp"
#include 
#include 
#include 
#include 
#include 
#include 

#include "Base/OiDefines.hpp"
#include "Base/OiGlobals.hpp"
#include "Core/OiCore.hpp"
#include "Core/OiSettings.hpp"

#include "OiCircleMarkWindow.hpp"
#include "OiCircleMarkDatabase.hpp"
#include "OiSmart.Flow/Appl.hpp"

唯一的区别就是把pch头文件调整到了第一行,然后就编译通过了。

查询资料发现OiPCH是项目里定义的预编译头文件,一般来说,预编译头文件都有类似pchstdafx之类的名字,也可以自定义,自行配置

对于预编译头文件,必须放在代码第一行,这是使用预编译头文件的硬性要求,是规定,编译器规定好的,没那么多为什么。

需要深入了解的话就要参考微软文档

你可能感兴趣的:(C++,PCH,C2605,预编译头文件,stdafx,未声明的标识符,C++,VS2022)