#ifndef
是一個預處理指令,用于防止頭文件被多次包含。在 C++ 中,當編譯器遇到一個頭文件時,它會檢查該文件中是否已經定義了一個唯一的宏。如果沒有定義,編譯器會包含該文件并定義該宏。如果已經定義了該宏,編譯器將跳過該文件,以避免重復包含。
為了恰當使用 #ifndef
,請遵循以下步驟:
選擇一個唯一的宏名稱。通常,這是頭文件的名稱大寫,后面加上 _H_
前綴。例如,對于名為 my_header.h
的頭文件,可以使用 MY_HEADER_H_
作為宏名稱。
在頭文件的開頭使用 #ifndef
指令檢查宏是否已定義。如果未定義,則包含頭文件內容并定義宏。
在頭文件的末尾使用 #endif
指令結束條件編譯塊。
以下是一個示例:
// my_header.h
#ifndef MY_HEADER_H_
#define MY_HEADER_H_
// 頭文件內容
#endif // MY_HEADER_H_
這樣,當其他源文件包含 my_header.h
時,編譯器會首先檢查 MY_HEADER_H_
宏是否已定義。如果未定義,編譯器會包含頭文件內容并定義宏。當同一個頭文件被多次包含時,編譯器會跳過該文件,因為宏已經被定義了。