#include 设施是C++预处理器的一部分,预处理器处理程序的源代码,在编译器之前进行。预处理器用指定的头文件内容代替每个#include。
无论头文件以何种格式保存,一般都含有支持分别编译所需的类定义及变量和函数的声明。
我们必须保证多次包含同一头文件不会引起该头文件定义的类和对象被多次定义。
预处理器变量的名字在程序中必须是唯一的,任何与预处理器变量相匹配的名字的使用都关联到该预处理器变量。
为了避免名字冲突,预处理器变量经常用全大写字母表示。
预处理器变量有两种状态:已定义或未定义。定义预处理器变量和检测其状态所用的预处理器指示不同。
#define指示接受一个名字并定义该名字为预处理器变量
#ifndef指示检测指定的预处理器变量是否定义。如果预处理器变量未定义,那么跟在其后的所有指示都被处理,知道出现#endif。