【C语言】条件编译的应用

目录

1. 条件编译概念介绍

2. 条件编译应用场景

2.1 代码块的暂时屏蔽

2.2 区分调试版本和发行版本

2.3 防止头文件重复包含


1. 条件编译概念介绍

        预处理程序提供了条件编译的功能。条件编译的目的就只编译源文件中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销。条件编译的基本格式如下。

#if A
{
    //检查宏A是否被定义。如果定义了,则执行此处代码块。
}
#elif B
{
    //如果宏A未被定义,则检查宏B是否被定义,如果B被定义,则执行此处代码块。 
}
#else
{
    //如果A和B都未被定义,则执行此处代码块。
}
#endif  

2. 条件编译应用场景

2.1 代码块的暂时屏蔽

        既然要进行代码块的屏蔽,为什么不用/**/而要使用条件编译#if 0呢,是因为有些代码块我们只是暂时不用,而并非永久不用,其次/**/的标准用法是用来注释而并非屏蔽代码,因此可以通过条件编译来快速地修改条件从而达成代码块的屏蔽作用,下面用例就暂时屏蔽了代码块2。

void text_code(void)
{
    //代码块1
    ....
    #if 0
    //代码块2
    ....
    #endif
}

2.2 区分调试版本和发行版本

        我们在编译文件时需要区分debug版本和release版本,debug版本是调试版本,也就是我们平时测试时的程序版本,而release版本是发行版本,是我们对外发行的版本。

        有些代码只需要在调试版本中出现,因此需要用条件编译来区分。比如下面这段代码,代码块1只在debug版本中出现,而代码块2在debug和release版本中都可以出现。

void text_code(void)
{
    #if DEBUG
    //代码块1
    ....
    #endif

    //代码块2
    ....
}

2.3 防止头文件重复包含

        头文件中使用条件编译的目的是防止多个文件在调用头文件的时重复包含从而使编译失败。

//如果该头文件未被包含,就执行头文件的内容,已包含则直接跳过该头文件
#ifndef __ TEST_H__ 

//定义头文件相关的宏
#define __ TEST_H__ 

//执行头文件中的内容
...

#endif

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电脑玩家饮水机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值