在 Visual C++(VC6/VS 早期版本)專案開發中,新手常混淆原始碼中的 #include與專案 FileView 中添加文件的關係。隨著專案增長,ClassView 顯示大量結構體/類別,導致視覺混亂、查找困難。本文解析兩者機制差異,並提供精簡 ClassView 的實用技巧。
| 維度 | #include <file> / #include "file" | FileView 添加文件 |
|---|---|---|
| 目的 | 編譯期引入宣告(.h),讓編譯器知道符號定義 | 告訴建置系統參與編譯/連結的原始檔(.cpp/.c) |
| 處理階段 | 前處理器展開,文本替換 | 專案建置腳本,編譯器獨立編譯每個 .cpp |
| 搜尋路徑 | 系統目錄(<>)或專案目錄("") | 專案相對路徑或絕對路徑 |
| 對 ClassView 影響 | 間接:.h 內的類別定義會被解析顯示 | 直接:.h 加入專案會強制解析進 ClassView |
| 必要性 | 使用符號前必須 | .cpp 必須加入;.h 可選 |
當你在 FileView 中將大量 .h 文件(特別是包含眾多 struct/class 定義的公共頭文件)加入專案時,VC 解析器會將其所有符號載入 ClassView 樹狀視圖。結果:
.cpp 文件必須加入專案(FileView),否則不參與編譯連結.h 文件不需要加入 FileView,只需在原始碼中 #include 即可#include 找到 .h,再由 .h 內的宣告關聯到對應 .cpp(若 .cpp 在專案中).cpp/.c 文件.h 文件從 FileView 中移除(右鍵 → Remove,不刪除實體文件)#include "xxx.h" 路徑正確(或在專案屬性 → C/C++ → Additional Include Directories 加入頭文件目錄).cpp 中實際定義/使用的類別#include,不加入專案新版 VS 使用 Solution Explorer 取代 FileView/ClassView,但原理相同:
#pragma once 或防衛巨集避免重複包含#include 給編譯器看;FileView 加 .cpp 給建置系統看;.h 不進 FileView 讓 ClassView 清爽。
掌握這一點,專案結構清晰,符號瀏覽高效,團隊協作也更順暢。