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

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

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

 

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

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

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

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

    #ifndef  XX_H

        #define XX_H

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

   #endif

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

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

  • 56
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值