C++为了使一个类能在多个文件中用可以使用头文件,经常在头文件中看到ifndef和endif,现在看看它有什么作用。
预处理器
我们先来了解下和它息息相关的预处理器。预处理器是确保头文件被多次包含还能安全工作的技术。比如说 #include 就是预处理功能,当编译器看到#include时就会用头文件的内容代替它。
然后还有一个预处理功能是头文件保护符,这个功能依赖于预处理。
预处理有两种状态:已定义和未定义。
所以下面有三个指令:
#define : 将一个名字设为预处理变量,经常用来设定一些值,但是为了高效C++应该尽量少用。
#ifdef : 当变量已经定义时为真。
#ifndef : 当变量未定义时为真 。
ifdef和ifndef指令若为真后续操作都会执行到 #endif 出现前。
#ifndef TEST_H #define TEST_H #include<cstring> class Test{ ....... } #endif
例如以上代码,当第头文件一次导入头文件时 #ifdef的值检查为真,预处理器就会顺序执行到#endif,第二次导入时,值为假,就不会执行后面的部分了。