4.7.4 头文件的标准
对于包含结构的每个头文件,应当首先检查这个头文件是否已经包含在特定的cpp文件中了。这需要通过测试预处理器的标记来检查。如果这个标记没有设置,这个文件没有包含,则应当设置它(所以这个结构不会被重声明),并声明这个结构。如果这个标记已经设置,则表明这个类型已经声明了,所以应当忽略这段声明它的代码。下面显示头文件的样子:
正如已经看到的,头文件第一次被包含,这个头文件的内容(包括类型声明)将被包含在预处理器中。对于在单个编译单元中的所有后续的包含,该类型声明被忽略。HEADER_FLAG可以是任何惟一的名字,但沿用的可靠标准是大写这个头文件的名字并且用下划线替换句点(但是前面的下划线是为系统名保留的)。例如:
虽然#endif之后的SIMPLE_H是注释,并且预处理器忽略它,但它对于文档是有用的。
防止多次包含的这些预处理器语句常常称为包含守卫(include guard)。