C++ :define、ifndef、ifndef和endif

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,第二次导入时,值为假,就不会执行后面的部分了。

最好的开始时间是以前,其次是现在。
原文地址:https://www.cnblogs.com/dragonsbug/p/13639223.html