#ifdef、#ifndef

今天在阅读源码的时候发现如下所示的代码

#ifndef XX_H
#define XXH
……
#endif 

之前对类似的宏定义并没有详细的了解,在此做个记录。

预处理命令可以改变程序设计环境,提高编程效率,但本身并不是 C 语言的组成部分,因此不能直接进行编译,必须在对程序编译之前,先对程序中这些特殊的命令进行预处理”。经过预处理后,程序再由编译程序对预处理之后的源程序进行编译处理,得到可供执行的目标代码。C 语言提供的预处理功能有三种,分别为宏定义文件包含条件编译

ifndef

主要含义是当没有定义该宏时,就编译ifndef之后、endif或者else之前的代码。
主要是为了防止C++中的引用冲突。在修改并编译工程时会出现交叉引用的问题,也就是两个头文件相互引用或者多个文件引用同一个头文件导致编译失败,ifndef可以有效的防止这个问题。

ifdef

与ifndef相反,ifdef的意义是假如某个宏被定义后则编译后面的代码,直到endif。

宏的定义有两种,一种是在源文件的开始处用#define定义,或者在编译时加上-D选项增加对-D后面的宏定义,具体方法如下:

gcc test.cc -DXX_H
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值