在C语言头文件里我们如何应用#ifndef

14 篇文章 1 订阅
14 篇文章 0 订阅
举个例子 我在led.h 头文件里这么写
#ifndef __LED_H
#define __LED_H
.......
......
#endif

1 这样写是如何完成防止重复定义功能的
2 __LED_H 这个宏定义我可以随便命名吗,还是这个#define后面的名字和 头文件led.h 得名字村子某种命名约束
3 在应用头文件中 ifdef 是如何公工作的
 
 
 
答案
 
 
  1.  编译器读到#ifndef __LED_H这一行时会检查当前__LED_H这个字符是否已经被宏定义了,如果是,则忽略其下文直到匹配的#endif;如果没有被宏定义,则继续编译其下文。这样当这个头文件第一次被#include时,编译器发现_LED_H这个字符未被宏定义,则编译余下的内容,第一句就将_LED_H这个字符宏定义,则以后#include时,此头文件就不会再被编译了。

  2. __LED_H这个名字可以任意取(其用来编译时区分是否是第一次被#include),但不能跟别的头文件中的定义重复。

  3. !ifdef __LED_H 的意义跟上面的相同。ifdef表示如果定义了某宏就编译下文直到匹配的#endif,跟ifndef类似的条件编译语句(逻辑正好相反)

 
 
 
ifdef这个宏定义可以防止重复定义
但是如何完成的呢
1 我们在头文件。h中写了这句话,
#ifndef __LED_H
#define __LED_H
.......
......
#endif
如果有多个文件引用了这个.h 文件
这多个文件又包含在同一个文件下。这样我们的ifdef就起作用了。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值