頭天好好的程序,第二天一早就報錯,還是莫名其妙的錯誤: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的地方都報錯,只是不能輸出顯示那么多。最后一個錯誤 “無法從以前的錯誤中恢復;正在停止編譯”,表示錯誤太多,編譯器已停止編譯。