# include 指示詞 (C/C++)
#include指示詞告訴前置處理器處理指定的檔案的內容,彷彿那些內容已出現在來源程式的點指示詞上出現的位置。
#include "path-spec"
#include <path-spec>
備註
您可以組織到包含檔案的常數和巨集定義,然後使用#include指示詞,可將這些定義加入至任何原始程式檔。 包含檔案也可用於整合的外部的變數和複雜資料型別宣告。 您必須定義,並命名為達到此目的所建立的包含檔案中的型別一次。
路徑規格檔名並選擇性地加目錄規格。 檔名必須命名現有的檔案。 語法路徑規格編譯程式的作業系統而定。
如需有關如何在 C++ 應用程式中使用編譯的參考組件資訊 /clr,請參閱 # using。
這兩種語法形式會取代該指示詞所指定的包含檔案的整個內容。 兩個表單之間的差異是前置處理器搜尋的順序的標頭檔時完全指定的路徑。 下表顯示兩種語法形式之間的差異:
語法格式 |
動作 |
---|---|
引號括住的表單 |
前置處理器會搜尋包含檔以下列順序:
|
角括弧表單 |
前置處理器會搜尋包含檔以下列順序:
|
前置處理器會停止搜尋,一旦發現具有指定名稱的檔案。 如果您指定完整、 明確指定的路徑包含檔引號 (""),前置處理器搜尋僅該路徑規格,並忽略標準的目錄。
如果以雙引號括住檔名是不完整的路徑規格,前置處理器的第一個 「 上層 」 檔案的目錄中搜尋。 父代的檔是包含#include指示詞。 例如,如果您包含一個名為檔案file2中名稱為file1, file1是父檔案。
包含檔案可以巢狀 「 結構 」 ; 也就是#include指示詞可以出現在另一個名稱為#include指示詞。 例如, file2、 上述之外,可能包括file3。 如此一來, file1還是很的父代file2 ,但會使用的是 「 祖父 」 的file3。
當包含巢狀結構的檔案,並進行編譯時從命令列,目錄搜尋開頭的父檔案的目錄,然後再繼續透過祖父系的任何檔案的目錄搜尋。 因此,搜尋會從開始相對於包含目前正在處理的來源目錄。 如果找不到檔案,搜尋會移至 /I 編譯器選項所指定的目錄中。 最後,會搜尋 INCLUDE 環境變數所指定的目錄。
從開發環境中,內 INCLUDE 環境變數會被忽略。 若要設定搜尋包含檔 (這項資訊也會套用至 LIB 環境變數。) 的目錄,請參閱選項對話方塊、 專案、 VC + + 目錄。
下列範例會示範使用角括弧內的檔案包含:
#include <stdio.h>
本範例新增名為 STDIO 的檔案的內容。H,原始程式。 角括號會使前置處理器来搜尋的 STDIO INCLUDE 環境變數所指定的目錄。H 之後搜尋 /I 編譯器選項所指定的目錄。
下列範例會示範使用引號括住的表單的檔案包含:
#include "defs.h"
本範例新增 DEFS 所指定的檔案的內容。H,原始程式。 雙引號表示前置處理器會搜尋第一次包含父原始程式檔的目錄。
包含檔案的巢狀結構,可以繼續最多 10 個層級。 一次巢狀#include就會繼續處理,前置處理器進行封入的 include 檔中插入原始的原始程式檔。
Microsoft 專有的
找不到 includable 的原始程式檔,前置處理器的第一個搜尋目錄所指定 /I 編譯器選項。 若 /I 選項並不存在,或失敗,則前置處理器會使用 INCLUDE 環境變數來尋找角括號內的任何包含檔。 包含環境變數與 /I 編譯器選項可以包含多個以分號分隔的路徑 (;). 如果一個以上的目錄看起來 /I 選項或 INCLUDE 環境變數中,前置處理器會搜尋這些以它們出現的順序。
例如,命令
CL /ID:\MSVC\INCLUDE MYPROG.C
使前置處理器搜尋包含檔,例如 STDIO 的 D:\MSVC\INCLUDE 目錄。H. 命令
SET INCLUDE=D:\MSVC\INCLUDE
CL MYPROG.C
具有相同的效果。 如果這兩組搜尋失敗,就會產生嚴重的編譯器錯誤。
如果檔名會完全指定的包含檔案路徑,其中包含冒號 (例如,F:\MSVC\SPECIAL\INCL\TEST。H) 中,前置處理器藉由連結路徑。
為指定的包含檔#include**'路徑規格'**,目錄搜尋開頭的父檔案的目錄,並接著會透過祖父系的任何檔案的目錄。 因此,相對於包含您建立的來源檔案的所在目錄搜尋開始#include指示詞所處理。 如果沒有上二層檔案,而且無法找到檔案,彷彿角括號括住檔名,也會繼續搜尋。
結束 Microsoft 特定