.h头文件中的 ifndef/define/endif 的作用?
时间: 2024-09-24 08:22:56 浏览: 59
#ifndef #define #endif的用法
.h头文件中的`#ifndef`, `#define`, 和 `#endif` 是预处理器宏(Preprocessor Macros)的一部分,用于处理条件编译。它们的作用如下:
1. **#ifndef**: 这是一个条件检查宏,如果宏名未定义(即尚未被其他地方`#define`),则执行接下来的代码块。这主要用于防止头文件被多次包含,防止循环依赖问题。
```cpp
#ifndef MACRO_NAME
// 宏定义在此处,如果MACRO_NAME未定义
#endif
```
2. **#define**: 当`#ifndef`检查失败(即宏已经定义),此行会定义指定的宏,使其具有值。这常用于声明全局常量或宏替换。
```cpp
#define MACRO_NAME "Some value"
```
3. **#endif**: 这是`#ifndef`和`#define`的结束标志,关闭了之前开始的条件区域。当遇到这个标记时,预处理器会回到上一级的`#ifndef`检查。
将这三个一起使用,可以在`.h`头文件开头声明一个宏,如果该文件还未被包含,则宏会被定义;一旦被包含一次,以后再包含就不会重复定义,从而避免了潜在的冲突。
阅读全文