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

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

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

 

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

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

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

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

    #ifndef  XX_H

        #define XX_H

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

   #endif

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

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

展开阅读全文

没有更多推荐了,返回首页