C语言头文件保护

  • 在C语言中,使用 #ifndef、#define 和 #endif 指令来防止头文件被重复包含是一个常见的做法。这种技术被称为“头文件保护”或“宏保护”。下面是相关代码中这些指令的作用解释:
#ifndef __A_H
#define __A_H

#define A  1000

#endif // __A_H

这段代码的意思是:

  1. #ifndef __A_H:检查宏 __A_H 是否未被定义。
  2. #define __A_H:如果 __A_H没有被定义,则定义它,并继续执行后面的代码。
  3. #define A 1000:定义宏 A 的值为 1000。
  4. #endif:结束条件编译块。
  • 当你在 a.c 中使用#include "a.h"时,编译器会读取 a.h 文件。如果头文件a.h 被多次包含,第一次包含时,__A_H 会被定义,因此后续的包含不会再执行 #define A 1000。这样可以防止重复定义的问题。

注意

  • 宏名 __A_H#include "a.h" 是不直接相关的。宏名 __A_H 仅用于在编译期间判断该头文件是否已经被包含过,它是为了确保头文件的内容只会被包含一次。
  • 只要头文件a.h 在项目中被正确地引用和包含头文件的实际内容(比如宏 A 的定义),在编译时就是有效的。而不是因为该头文件的名称为a.h,所以我们才定义该宏的名称为__A_H,然后在源文件包含头文件,就相当于使用__A_H,而__A_H就是a.h,这是错误的。
  • 总之,__A_H只是一个用来标识控制头文件是否被包含的标记,与头文件的名称无关的。只要文件包含了这个保护机制,你在 a.c 文件中使用 #include "a.h" 是可以正常使用宏定义A 的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值