平時(shí)我們閱讀kernel代碼充斥著大量的 類似下面的ifdef代碼
#ifdef CONFIG_SMP
static void __hrtick_restart(struct rq *rq)
......
#else
void hrtick_start(struct rq *rq, u64 delay)
......
#endif /* CONFIG_SMP */
可以看看這個(gè)if比較多的 https://github.com/npnet/kernel_realme_mt6833/blob/R/drivers/misc/mediatek/video/common/pwm10/ddp_pwm.c 例子
這種龐大的條件宏增加了軟件工程師們的負(fù)擔(dān),有時(shí)還會(huì)理解失誤田晚,導(dǎo)致出現(xiàn)bug返弹,針對(duì)這種情況,有沒有辦法簡化代碼骄恶,解放大腦?
在個(gè)人的工作中匕垫,總結(jié)了一些更為合理和便捷的規(guī)律:
每個(gè)項(xiàng)目是有特定的.config,這個(gè).config是會(huì)定義
CONFIG_SMP=y
CONFIG_MACH_MT6761=y
# CONFIG_MACH_MT6765 is not set
根據(jù)這個(gè)實(shí)際的配置文件可以按照c語言的規(guī)則來簡化代碼,比如看下下面這個(gè)效果:
可以看到 #else的相關(guān)代碼沒有了虐呻,因?yàn)镃ONFIG_SMP=y的話是不會(huì)走#else分支象泵,所以這部分代碼就沒用了寞秃,也就沒必要顯示出來了。
后記:
作者希望中國的程序員能以創(chuàng)新為指引偶惠,相信自己春寿,相信國人,類似matlab這樣的軟件也能在中國遍地開花忽孽。
Elon Phroes