現象
C++ 專案中,cpp 引用了頭文件並包含模板函數,編譯器報錯「未找到標識符」,但頭文件確實存在且拼寫正確。
根本原因
同一專案在不同 IDE(如 VS2013、VS Code、Dev-C++)間切換編輯,導致源文件編碼格式不一致(如 UTF-8 with BOM、UTF-16、ANSI 混雜),編譯器無法正確解析符號名稱。
解決步驟
- 將報錯相關的
.h、.cpp 文件內容複製備份。
- 在 IDE 中刪除這些文件(從專案移除並刪除磁碟文件)。
- 新建同名文件(Ctrl+N → C++ Header/Source File)。
- 將備份內容貼上(此時文件編碼為 IDE 預設格式,通常為 UTF-8 無 BOM 或 ANSI)。
- 重新建置專案。
預防建議
- 統一團隊 IDE 與編碼設定(推薦 UTF-8 無 BOM)。
- 使用 `.editorconfig` 強制統一縮排、編碼、換行符。
- 版本控制忽略 IDE 產生的用戶配置文件(如 `.vs`、`.vscode`)。
看似離譜的「找不到識別符」,往往是編碼格式惹的禍,重建文件即可治本。