已经包含头文件仍然出现,错误C2065“未声明的标识符”

由于当前在往一个比较大的项目中添加文件,文件又有相似性所以采取了复制的方式,最后出现了一个大疏漏。

在总的.cpp文件中调用新文件中的函数,在包含了新文件的.h头文件的情况下仍然说没有找到标识符,在网上找了很多方法,其中比较玄学的一种是

 

在VS2012下进行VC++调试时,出现这样一种错误:error C2065:未声明的标识符,当时感觉十分怪异,为什么说怪异呢?因为如果在.cpp中未引入相关.h文件出现这样的错误很正常,但是现在是已经引入了相关的头文件,却还是出现了诸如error C2065、error C2087、error C2133...的错误。

最终解决办法是修改了一下其头文件的顺序,原先copy时“#include "StdAfx.h"”在几个头文件的最后位置,将其提前到最前位置,问题得到解决。原来不仅要引入相关的头文件,其位置也要放正确。当然预编译头文件应该放在最前位置吧,不过在原先的工程中放在最后却没有错误,怪哉。

但是,该方法并不顶用  换了位置之后  并列的另外一个文件的头文件里的定义找不到了

后来发现其根本问题出在,c++的条件编译机制上,为了防止头文件的重复编译重复定义,所以总文件包含的几个头文件前都添加了条件编译,类似于

    #ifndef  XX_H

        #define XX_H

        ......接下来是具体定义

   #endif

而我有两文件的编译条件是重复的,所以出现了更换位置有变化的现象。

网上目前还没有这样的说明,特此一记。

 

以上是我从https://blog.csdn.net/gaoshangdemao/article/details/81531249看到的文章

因为我包含的系统的头文件,已经增加了#ifndef ...#define 等

后面我又看到一篇文章

https://blog.csdn.net/tc1175307496/article/details/82859887

说是编码问题的原因,我通过他的方式做了,保存时,出现了如下状况

我再观察自己的代码,一直出现的现象是

每一行都有!此时,我想到了编码的问题,但是按照上面的操作还是存在unicode编码???我把代码复制到notepad++中

并没发现上面异样,但是当我从utf-8转到ANSI编码时,问题就显示出来了

 

原因是我这个代码时从网络中复制下来的,复制的时候复制了附带了一些网页中其他编码的字符,导致了这问题。现在只要将每一行的第一个字符删除即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值