1. 程式人生 > 實用技巧 >C++ :define、ifndef、ifndef和endif

C++ :define、ifndef、ifndef和endif

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,第二次匯入時,值為假,就不會執行後面的部分了。