头天好好的程序,第二天一早就报错,还是莫名其妙的错误:atlconv.h等头文件中的“_T” 报错,百思不得其解,各种搜索而不得,整个人都崩溃了。
出问题一定是有原因的,后来冷静下来,缕缕思路,逐一排查。
有一点可以确定:程序本身是没问题的,出错是在字符集,因为备份的程序也报同样的错误。
既然在atlconv.h等头文件中,试试替换VS安装目录中的atlmfc目录下的这些文件。虽然这些文件是VS自带的atl头文件,自己也没改动过,但不代表它没被改过。从同事那里拷贝过来头文件,替换,程序仍然报错。
后来,又测试新建的win32 程序,也报错,,,,,,那就只能是定义了"_T"的头文件出错了吧。
找到电脑中名字为tchar.h的所有文件
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\src\tchar.h
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\tchar.h发现VS目录中有这两个,然后对比两个文件的MD5码,竟然不一样!发现后者中的tchar.h文件早上被改动过了,,,,,,,欲哭无泪-_-
删除第二个头文件,程序找不到头文件;用前者替换第二个头文件,编译OK!
反思:出问题一定有原因,不要感觉莫名其妙,不要固执的认为自己什么都没动,文件就不会变;什么都没改,程序就不应该出错,系统改动过了呢。多测试多排查,各种可能都要考虑。
后记:应该是所有_T的地方都报错,只是不能输出显示那么多。最后一个错误 “无法从以前的错误中恢复;正在停止编译”,表示错误太多,编译器已停止编译。