平时我们阅读kernel代码充斥着大量的 类似下面的ifdef代码
#ifdef CONFIG_SMP
static void __hrtick_restart(struct rq *rq)
......
#else
void hrtick_start(struct rq *rq, u64 delay)
......
#endif /* CONFIG_SMP */
可以看看这个if比较多的 https://github.com/npnet/kernel_realme_mt6833/blob/R/drivers/misc/mediatek/video/common/pwm10/ddp_pwm.c 例子
这种庞大的条件宏增加了软件工程师们的负担,有时还会理解失误,导致出现bug,针对这种情况,有没有办法简化代码,解放大脑?
在个人的工作中,总结了一些更为合理和便捷的规律:
每个项目是有特定的.config,这个.config是会定义
CONFIG_SMP=y
CONFIG_MACH_MT6761=y
# CONFIG_MACH_MT6765 is not set
根据这个实际的配置文件可以按照c语言的规则来简化代码,比如看下下面这个效果:
可以看到 #else的相关代码没有了,因为CONFIG_SMP=y的话是不会走#else分支,所以这部分代码就没用了,也就没必要显示出来了。
后记:
作者希望中国的程序员能以创新为指引,相信自己,相信国人,类似matlab这样的软件也能在中国遍地开花。
Elon Phroes