巨集定義是我們在專案開發中經常會使用到的,尤其是在嵌入式開發中,比如針對io口的巨集定義。巨集定義不會佔據記憶體,巨集定義只會在程式使用到的時候插入進來。
在開發過程中我們經常會將一些具有關聯的資料使用巨集定義,比如,在微控制器的開發中,定時器是乙個非常重要且幾乎都要被使用到的外設,在專案中都會設定乙個基準的定時時間假設是1ms,在此,我們可以將1ms這個計時基準設定成為乙個巨集定義,比如
#define sys_tick_1ms 1
那麼後面我要用到10ms,100ms,1s的時候,有的人則會這樣定義
#define sys_tick_10ms 10
#define sys_tick_100ms 100
#define sys_tick_1s 1000
總體來看,這樣並沒有錯位,但是仔細想想卻會出現這樣乙個問題,假設我的基準的時鐘不是1ms而是變成了10ms了呢,那麼是不是所有的巨集定義都是需要重新修改的了,因此,最正確的方法則是設定乙個基準,所有的後續與他相關聯的都在這個基準上進行計算,例如
#define sys_tick_1ms 1
#define sys_tick_10ms sys_tick_1ms*10
#define sys_tick_100ms sys_tick_10ms*10
#define sys_tick_1s sys_tick_100ms*10
這樣,如果我的基準時間變了,那麼我只要去改1ms的這個巨集定義的值則ok,其他地方完全不要動。尤其是在**移植的過程中這樣的做法是非常有效而且能減少出錯的概率,畢竟在很多情況下,機器的可靠性比人的可靠性是高的。 C語言巨集定義中的 與
1 為後面的巨集形參新增雙引號。例 define singlesharp arg arg 注意 和arg之間可以有空格,效果一樣 singlesharp singlesharp singlesharp 2 為後面的巨集形參新增單引號。例 define singlesharpwithat arg ar...
c語言的巨集定義
include define square x x x define pr x printf the result is d.n x int main void 執行結果如下 the result is 16.the result is 4.the result is 14.the result i...
C語言的巨集定義怎麼用 巧用C語言巨集定義
例如 中多個地方使用當前時間作為字串,如果不使用巨集定義,中如果有十個地方使用了當前時間這個字串,那麼我每一次編譯 都要修改十個地方,但是如果我使用了巨集定義 define current time 14 30 char time current time printf current time i...