#ifdef 和 #ifndef 指示詞
預處理器指示詞,判斷是否已定義特定的預處理器常數或宏。
#ifdef 識別碼 ... |
---|
#endif |
#ifndef 識別碼 ... |
#endif |
參數
項目 | 描述 |
---|---|
識別碼 |
要檢查之常數或宏的識別碼。 |
備註
您可以使用#ifdef和#ifndef指示詞,在任何可以使用 #if 的地方。 #ifdef 語句相當於 ) 指示詞。 這些指示詞只會檢查使用 #define 指示詞定義的識別碼是否存在,不適用於 C 或 C++ 原始程式碼中所宣告的識別碼。
提供這些指示詞的目的只是為了保留與舊版語言的相容性。 最好使用 已定義的 運算子搭配 #if 指示詞。
#ifndef 指示詞會檢查與 #ifdef 所檢查之條件相反的條件。 如果未定義識別碼,條件為 true (非零) ;否則,條件為 false (零) 。
範例
identifier 可以從命令列使用 /D 選項傳遞。 使用 /D 最多可以指定 30 個巨集。 這個選項在檢查定義是否存在時很實用,因為可以從命令列傳遞定義。 下列範例會使用此行為來判斷是否要在測試模式中執行應用程式。
// PROG.CPP
#ifndef test
#define final
#endif
int main()
{
}
使用下列命令編譯時,prog.cpp 會在測試模式中編譯;否則,它會在最終模式中編譯。
CL.EXE /Dtest prog.cpp