VC6 陪伴過無數 C++ 開發者的青春歲月。雖然年代久遠,但許多經典技巧至今仍具參考價值。本文整理 20 個高頻問題與解法,助你少走彎路。
專案屬性 → C/C++ → General → Debug Info 選 Program Database;Link → 勾選 Generate debug info;優化關閉。此時 QuickWatch、呼叫堆疊仍可用,但 ASSERT/VERIFY 失效。
ASSERT(expr) 在 Release 完全編譯掉;VERIFY(expr) 保留表達式執行但不判斷真偽。涉及副作用(如檔案開啟)務必用 VERIFY,否則 Release 下功能直接缺失。
一個 Workspace 含多個 Project,唯一 Active Project 可依賴其他靜態庫專案,於 Settings → Link → Object/library modules 設定。
專案目錄新建空 .rc 檔並加入專案即可。
Ctrl+B 開啟斷點對話框 → Condition 設定觸發條件(如 i == 100)。
關閉專案 → 刪除 .ncb → 重開專案。這是 VC6 經典 Bug。
FileView 刪除 .h/.cpp → 檔案總管再刪一次 → 開啟 ClassWizard 選 Remove。
打開頭文件,隨意修改類名存檔 → Workspace 顯示新類 → 改回原名。
Ctrl+Shift+F8 或 Edit → Breakpoints → Remove All。
ClassWizard → Class Info → Message filter 改為 Window,即可看到 WM_* 訊息。
游標停在括號前按 Ctrl+],匹配則跳轉,否則嗶一聲。
游標放在巨集/函數/變數上按 F12(需先建立瀏覽資訊)。
Project → Settings → Link → Object/library modules 填入庫名,空格分隔。
FileView 右鍵專案 → Clean(selection only)。
New → Custom AppWizard → An existing Project → 選擇現有 .dsp → Finish。產生的 .awx/.pdb 放在 Common\MSDev98\Template 即可像 MFC AppWizard 一樣使用。
原因:未來檔案(修改時間 > 系統時間)。刪除 Debug 目錄下所有時間異常檔案 → Rebuild All。
核心原因:符號在所有庫/目標檔中找不到。常見誘因:
wWinMainCRTStartupProject Settings → Debug → Executable for debug session 填入該 EXE 完整路徑,可帶參數、指定工作目錄。適用於 DLL、COM、Namespace Extension、Plug-in。
| 副檔名 | 用途 | 可否手改 |
|---|---|---|
| .opt | IDE 介面佈局 | 否 |
| .aps | 資源輔助二進制檔 | 否 |
| .clw | ClassWizard 資料(INI 格式) | 可手修救急 |
| .dsp | 專案檔(文字) | 不建議 |
| .dsw | 工作區檔 | 不建議 |
| .plg | 編譯日誌(HTML) | 可關閉生成 |
| .ncb | IntelliSense 資料庫 | 出問題刪除重建 |
| .pch/.pdb | 預編譯頭/調試資料庫 | 否 |
工欲善其事,必先利其器。這 20 條技巧涵蓋編譯、連結、調試、專案管理全鏈路,建議收藏備查。雖然 VC6 已成歷史,但其中的工程思維——理解工具鏈本質、善用診斷資訊、建立標準化流程——放在任何現代 IDE 依然通用。