C++ :define、ifndef、ifndef和endif
阿新 • • 發佈:2020-09-09
C++為了使一個類能在多個檔案中用可以使用標頭檔案,經常在標頭檔案中看到ifndef和endif,現在看看它有什麼作用。
前處理器
我們先來了解下和它息息相關的前處理器。前處理器是確保標頭檔案被多次包含還能安全工作的技術。比如說#include就是預處理功能,當編譯器看到#include時就會用標頭檔案的內容代替它。
然後還有一個預處理功能是標頭檔案保護符,這個功能依賴於預處理。
預處理有兩種狀態:已定義和未定義。
所以下面有三個指令:
#define : 將一個名字設為預處理變數,經常用來設定一些值,但是為了高效C++應該儘量少用。
#ifdef : 當變數已經定義時為真。
#ifndef : 當變數未定義時為真 。
ifdef和ifndef指令若為真後續操作都會執行到 #endif 出現前。
#ifdef TEST_H #define TEST_H #include<cstring> class Test{ ....... } #endif
例如以上程式碼,當第標頭檔案一次匯入標頭檔案時 #ifdef的值檢查為真,前處理器就會順序執行到#endif,第二次匯入時,值為假,就不會執行後面的部分了。