由于当前在往一个比较大的项目中添加文件,文件又有相似性所以采取了复制的方式,最后出现了一个大疏漏。
在总的.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编码时,问题就显示出来了
原因是我这个代码时从网络中复制下来的,复制的时候复制了附带了一些网页中其他编码的字符,导致了这问题。现在只要将每一行的第一个字符删除即可。