文章目录
1 写在前面
大家都知道C语言被广泛应用在嵌入式系统的编程中,一个很大的原因是C语言它是一种偏底层的高级语言,能够对内存、硬件等直接做高效操作;另一个原因,我想可能是还在于它的 高可移植性 和 高可裁剪性。
今天重点讲一个在可裁剪性上,C语言中用得非常广泛的 #if 语句;尽管这个语句大家一定用得非常熟练,但是往往不注意,可能你就会掉进坑里。
下面的问题,你不妨试试看。
2 问题描述
事情是这样的,有一天,我又突然被一个同事问蒙了!请看:
啥意思,我们捋一捋。
873行的 TURNNING_OFF 值为1;(先不讨论为何OFF值是1而不是0)
874行的 POWER_GRADUALLY_TURNING 值为0;(当前配置选的是ON分支)
875-881使用 #if-#elif-#endif 做预处理判断,想达到根据值的不同实现相应代码的裁剪。
按照设计的【期望】值,当前配置下,代码逻辑应该是走4 —xxx ,即879行 (ON逻辑)