這是2016年的最后一篇博客,年初定的計(jì)劃是寫12篇博客,每月一篇,1/3轉(zhuǎn)載,2/3原創(chuàng),看來(lái)是實(shí)現(xiàn)不了了! -- 題外話。今天要寫的東西是C語(yǔ)言中的預(yù)處理器,我們常說(shuō)的宏定義的用法。為什么要寫這個(gè)東西呢,原因很簡(jiǎn)單:之前對(duì)預(yù)處理了解不深。如果你對(duì)C語(yǔ)言只是了解或者是僅僅在大學(xué)中學(xué)習(xí)過(guò)C語(yǔ)言,說(shuō)到預(yù)處理估計(jì)你只知道下面這條語(yǔ)句:(因?yàn)槲揖褪沁@種情況,哈哈?。?/p>

1 #define name value

  我再學(xué)習(xí)預(yù)處理直接的驅(qū)動(dòng)力是看了php的源碼,開頭一大推的宏定義器,之前'掌握'的一點(diǎn)#define的用法太少了,根本看不懂源碼中宏的處理邏輯和運(yùn)行的路徑。所以再學(xué)習(xí)預(yù)處理器很有必要,里面好多東西其實(shí)并不難,只是你沒(méi)有接觸到,等你學(xué)習(xí)了,就感覺(jué)容易了。

  一、宏定義和使用中的坑

  這小節(jié)采用先給代碼再說(shuō)明的形式,這樣你可以看看每個(gè)代碼的運(yùn)行結(jié)果是否和你預(yù)期的一致!

  宏是什么,宏就是#define機(jī)制把指定的參數(shù)替換的文本中,這樣的實(shí)現(xiàn)方式就是宏。使用宏定義可以抽出頻繁調(diào)用的函數(shù),加快執(zhí)行的速度。定義如下:#define name(參數(shù))  執(zhí)行體...  “參數(shù)”可以是使用逗號(hào)分隔的參數(shù)列表,這些參數(shù)可以被應(yīng)用到執(zhí)行體中,必須要注意的是“參數(shù)”的左括號(hào)必須和宏名字緊鄰,不然編輯器會(huì)報(bào)錯(cuò),或者被解釋成執(zhí)行體中的一部分。比如你寫了一個(gè) TEST(a) a * a 調(diào)用執(zhí)行的時(shí)候?qū)懮?TEST(1) 實(shí)際執(zhí)行的是替換后的 1 * 1。

  凡事都有利弊,宏定義固然使用方便,并且有著函數(shù)不可比擬的執(zhí)行速度,但是宏定義中存在不少的坑,下面就說(shuō)一說(shuō)這個(gè)坑??聪旅娴拇a:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式