在C++中,#ifndef
是一個預處理指令,用于條件編譯。它的作用是檢查指定的宏是否已經定義。如果沒有定義,則編譯#ifndef
和#endif
之間的代碼。如果已經定義,則跳過這部分代碼。這可以用于避免重復包含頭文件或者在不同的編譯環境下使用不同的代碼實現。
#ifndef
的語法如下:
#ifndef 宏名
// 當宏名未定義時,編譯此處的代碼
#endif
例如,假設我們有一個名為MY_HEADER.h
的頭文件,我們不希望它被多次包含。我們可以使用#ifndef
來防止這種情況:
#ifndef MY_HEADER_H
#define MY_HEADER_H
// 頭文件的內容
#endif // MY_HEADER_H
在這個例子中,如果MY_HEADER_H
沒有被定義,編譯器會編譯頭文件中的代碼,并在遇到#define MY_HEADER_H
時定義它。當同一個頭文件再次被包含時,由于MY_HEADER_H
已經被定義,編譯器會跳過#ifndef MY_HEADER_H
到#endif
之間的代碼,從而避免了重復包含。