预处理器
确保头文件多次包含仍然能安全工作的常用技术是预处理器
预处理器是在编译之前执行的一段程序,可以部分的改变我们所写的程序。
就如:预处理功能#include,当预处理器看到#include标记时就会用指定的头文件的内容代替#include。
C++还会用到的一项预处理功能是头文件保护符。
头文件保护符依赖于预处理变量。
预处理变量有两种状态:已定义和未定义。
#define指令把一个名字设定为预处理器变量,
另外两个指令分别检查某个指定的预处理变量是否已经定义:#ifdef当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检查结果当真,则执行后续操作直至遇到#endif指令为止。
注意: 整个程序中的预处理变量包含头文件保护符必须唯一,并且一般要求大写。
另外:头文件即使没有被包含在任何其他的头文件中,也应该设置保护符。头文件保护符很简单,程序员只要习惯性地加上就可以了,没必要太在乎你的程序到底需不需要。