预处理器:
确保头文件多次包含仍能安全工作,即可以有效地防止头文件重复包含的发生.
它由c++语言继承c语言而来,预处理器是在编译之前执行的一段程序。
我们比较熟悉的#include 就是一项预处理功能,当预处理器看到#include标记时就会用指定的头文件代替#include。
预处理器还会用到一项预处理功能就是头文件保护符,头文件保护符依赖于预处理变量,而预处理变量有两种状态:已定义和未定义。
我们经常用#define指令把一个名字设定为预处理变量,
#ifdef 和#ifdnf 指令用于 检查某个预处理变量是否已经定义。
#ifdef 为真说明变量已经被定义
#ifndef 为真说明变量还未被定义
一旦上述某个检查结果为真则执行后续操作直至遇到#endif指令为止,
检查结果为假则忽略在其中间的部分。
//现有头文件Student.h 和头文件Teacher.h
#ifndef STUDENT_H
#define STUDENT_H
#include "Student.h" //#ifndef 为真时执行此操作
#endif _STUDENT_H_
#ifdef STUDENT_H
#include "Teacher.h" //#ifdef 为真时执行此操作
#endif
//两个指令结果都为真 两个头文件全被导入
提示:
1.预处理变量无视作用域规则
2.为了避免与其他命名冲突,一般都把预处理变量的名字全部大写或配合'_'命名