更多 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 在维基百科。