【C语言进阶】#if的使用你需要注意的坑

本文介绍了C语言中预处理器#if的使用,通过一个实际问题探讨了条件编译的陷阱。当使用枚举定义在#if语句中时,由于预处理器不处理枚举,可能导致预期外的编译结果。通过深入分析,揭示了预处理器如何处理宏定义和枚举定义,以及如何修复此类问题。强调了理解和掌握C语言基础语法对于解决问题的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1 写在前面

大家都知道C语言被广泛应用在嵌入式系统的编程中,一个很大的原因是C语言它是一种偏底层的高级语言,能够对内存、硬件等直接做高效操作;另一个原因,我想可能是还在于它的 高可移植性高可裁剪性

今天重点讲一个在可裁剪性上,C语言中用得非常广泛的 #if 语句;尽管这个语句大家一定用得非常熟练,但是往往不注意,可能你就会掉进坑里。

下面的问题,你不妨试试看。

2 问题描述

事情是这样的,有一天,我又突然被一个同事问蒙了!请看:

image-20220311150105337

啥意思,我们捋一捋。

873行的 TURNNING_OFF 值为1;(先不讨论为何OFF值是1而不是0)

874行的 POWER_GRADUALLY_TURNING 值为0;(当前配置选的是ON分支)

875-881使用 #if-#elif-#endif 做预处理判断,想达到根据值的不同实现相应代码的裁剪。

按照设计的【期望】值,当前配置下,代码逻辑应该是走4 —xxx

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

架构师李肯

您的鼓励是我前进的最大动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值