PID是一種非常經(jīng)典的控制類(lèi)算法,憑著它的簡(jiǎn)單易用在工程上得到了廣泛的應(yīng)用,并且影響力也是極高,那為什么說(shuō)其簡(jiǎn)單易用呢?可以說(shuō)只要你對(duì)PID的主要的參數(shù)對(duì)系統(tǒng)的影響理解得足夠好,完全可以通過(guò)手動(dòng)試湊的方式來(lái)獲得一套合適的PID參考,所以對(duì)一些非控制類(lèi)的工程師應(yīng)用起來(lái)也是非常友好的。
今天分享一個(gè)C語(yǔ)言宏定義小技巧,從語(yǔ)法上來(lái)看比較簡(jiǎn)單,不過(guò)一旦真正領(lǐng)悟到其精妙之處不僅可以簡(jiǎn)化代碼、還能提高代碼的可擴(kuò)展性。X-MACRO宏技術(shù)的核心在于靈活的應(yīng)用#define與#undef,對(duì)于玩C語(yǔ)言的伙計(jì)#define是再熟悉不過(guò)了,但#undef卻鮮有人在實(shí)際的開(kāi)發(fā)過(guò)程中熟練使用,基本上都是#define走天下。那#define的作用域是怎樣的呢?其作用范圍都是從宏定義處到文件結(jié)束,不管函數(shù)內(nèi)外均可以隨意使用。那一不小心使用#define重復(fù)定義相同的宏又會(huì)怎樣呢?對(duì)于大部分編譯器會(huì)報(bào)重復(fù)定義警告,但也有小部分編譯器采用最近的宏定義直接通過(guò),所以稍不留神就把bug引入到了代碼中。其實(shí)對(duì)于C語(yǔ)言編程素養(yǎng)良好的工程師們多會(huì)使用#undef來(lái)限制宏定義的作用范圍,即取消宏定義,以免造成宏泛濫。
liqinglong1023