更多 C++ 慣用法/包含守衛宏
外觀
允許多次包含標頭檔案。
在同一個編譯單元中多次包含相同標頭檔案會導致違反 C++ 的基本規則:單定義規則 (ODR)。由於直接和間接包含,標頭檔案可能會被多次包含。
包含守衛宏慣用法是一個古老的慣用法,也適用於 C 程式。它使用簡單的 #define 來允許在編譯單元中多次包含標頭檔案。該慣用法確保在預處理後,標頭檔案中的受保護內容只被編譯器看到一次。更準確地說,編譯器在標頭檔案第一次被包含的地方看到受保護的內容。以下宏被放置在標頭檔案的開頭和結尾
#ifndef MYHEADER_H_ // beginning
#define MYHEADER_H_
...
#endif // MYHEADER_H_ // end
一些編譯器支援
#pragma once
作為包含守衛的有效替代方案。它不需要像一些編譯器中的傳統包含守衛宏那樣多次開啟標頭檔案。在許多現代編譯器(如 GCC4 或 MSC++2008)上,#pragma once 不會帶來更好的編譯時間效能,因為它們會識別標頭檔案守衛。
實際上世界上所有的標頭檔案!
#pragma once 在維基百科。