预处理器是运行于编译之前的一段程序,如#include预处理功能,当预处理器看到#include时,就会用指定的头文件内容替换#include。预处理器可以保证头文件被多次包含仍能正常工作:
头文件class_a.h内容如下:
#ifndef CLASS_A_H
#define CLASS_A_H
#include<string>
struct CLASS_A{
std::string name;
int num;
};
#endif
如果没有#ifndef和#endif指令,有2个源文件同时包含了class_a.h这个头文件,那么string这个头文件就会被2次包含进去,势必会浪费资源,而用上面的内容,借助于预处理变量CLASS_A_H可以有效防止重复包含。
- 预处理变量一般按照头文件中类的名字来构建
- 预处理变量名一般全部大写,避免与程序中的变量冲突
- 应该习惯性的对头文件做上述处理——头文件保护符