【C系列】之预处理的条件编译#ifdef/#if/#elif/#else/#endif用法详解

DATE: 2019-2-21

前言

在实现不同模块的代码时,并且不同模块存在复用的代码时,可以采用预处理宏定义#ifdef来实现不同的分支处理。

1、参考

https://bbs.csdn.net/topics/210046082

2、预处理及其作用

预处理指令共有三种:

  • 宏定义 #define M 2
  • 条件编译 #ifdef/#if/#elif/#else/#endif
  • 文件包含 #include

预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。

这里主要讲解预处理中条件编译#ifdef/#if/#elif/#else/#endif使用的几种方式。

3、预处理的条件编译#ifdef/#if/#elif/#else/#endif使用的几种方式

方式一:

#ifdef _XXXX
...程序段1...
#else
...程序段2...
#endif

这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
注意:这种方式#ifdef后面只能跟一个宏变量。

方式二:

#ifndef _XXXX
...程序段1...
#else
...程序段2...
#endif

与方式一相反。

方式三:

#if 常量 
...程序段1...
#else
...程序段2...
#endif 

这种方法可以将测试代码加进来。当需要开启测试的时候,只要将常量变1就好了。而不要测试的时候,只要将常量变0。

方式四:

#if defined(Macro1) || defined(Macro2) || defined(Macro3)
...程序段1...
#elif defined(Macro4)
...程序段2...
#endif

方式四这种方法比较灵活,可以使用多个宏变量的组合(或||or与&&),推荐使用这种方法!

方式五:

#if !defined(Macro1) || defined(Macro2) || defined(Macro3)
...程序段1...
#elif !defined(Macro4)
...程序段2...
#endif

THE END!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞翔的鲲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值