資源描述:
《C語(yǔ)言常用宏定義技巧.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、個(gè)人收集整理-ZQ用語(yǔ)言編程,宏定義是個(gè)很重要地編程技巧.用好了宏定義,它可以增強(qiáng)程序地可讀性、可移植性、方便性、靈活性等等..防止一個(gè)頭文件被重復(fù)包含:頭文件內(nèi)容當(dāng)你所建地工程有多個(gè)源文件組成時(shí),很可能會(huì)在多個(gè)文件里頭包含了同一個(gè)頭文件,如果借用上面地宏定義就能夠避免同一個(gè)頭文件被重復(fù)包含時(shí)進(jìn)行多次編譯.因?yàn)楫?dāng)它編譯第一個(gè)頭文件時(shí)總是沒(méi)有定義,那么它將編譯一遍頭文件中所有地內(nèi)容,包括定義.這樣編譯再往下進(jìn)行時(shí)如果遇到同樣要編譯地頭文件,那么由于語(yǔ)句地存在它將不再重復(fù)地編譯這個(gè)頭文件..通過(guò)宏定義使得同一數(shù)據(jù)類型地字節(jié)數(shù)不因不同地平臺(tái)或不同地編譯器而改變:;**;*
2、*;**;**;**;**;**.得到指定地址地一個(gè)字節(jié)或字:()(*((*)()))()(*((*)()))注:類似于這種有多個(gè)字符串組成地宏定義一定要注意加上“()”,因?yàn)槲覀冎篮甓x只是一種簡(jiǎn)單地字符替換功能..求最大值和最小值:()((()>())?():())()((()<())?():()).得到一個(gè)結(jié)構(gòu)體中所占用地字節(jié)數(shù):()(((*))>).按照格式把兩個(gè)字節(jié)轉(zhuǎn)化為一個(gè):()(((()()[])*)()[])或可以是()(((()())*)()).按照格式把一個(gè)轉(zhuǎn)化為兩個(gè)字節(jié):個(gè)人收集整理-ZQ(){()[](());()[](());}()或可以
3、是(){(());(());}()注:這里地{}()是為了防止多語(yǔ)句地宏定義在使用中出錯(cuò).比如:(…)()上面地程序代碼中要是宏定義()中沒(méi)有{}(),這時(shí)我們應(yīng)該將語(yǔ)句改為:(…){()}{}.得到一個(gè)變量地地址:()((*)(*)())()((*)(*)())注:宏定義語(yǔ)句中*申明了該地址可以是任何類型變量地地址,*申明為單字節(jié)變量地地址,*申明為雙字節(jié)變量地地址..得到一個(gè)高位和低位字節(jié):()(()(()()))()(()(()()>>)).返回一個(gè)比大地最接近地地倍數(shù):()(((()))*).將一個(gè)字母轉(zhuǎn)換為大寫:()((()>‘’()<‘’)?(()–):
4、())相對(duì)應(yīng)地還有將一個(gè)字母轉(zhuǎn)換為小寫:()((()>‘’()<‘’)?(()):())注:如果你記不住大寫和小寫之間地差值,可以將換成(’’‘’),但這里小寫地值大于大寫地值你該要記住地吧..防止溢出地一個(gè)方法:()((()>())?():())還可以做成循環(huán)計(jì)數(shù)地(加入計(jì)數(shù)器是個(gè)無(wú)符號(hào)整數(shù)):()((()>())?():()).宏中“”和“”地用法:一般用法:使用“”把宏參數(shù)變?yōu)橐粋€(gè)字符串,用””把兩個(gè)宏參數(shù)結(jié)合在一起例程:#""#""()()()(){(());輸出字符串“”(“”());輸出:;}個(gè)人收集整理-ZQ當(dāng)宏參數(shù)是另一個(gè)宏地時(shí)候,注意宏定義里有用“
5、”或“”地地方宏參數(shù)是不會(huì)再展開(kāi)地:非“”和“”情況:例程:()()(*)(“*”());該行可展開(kāi)為(“*”,(),(),(()*()));有“”或“”情況:例程:()()()()(“:”());在該行展開(kāi)為(“:”,””);即這里只是展開(kāi)宏(),而下一級(jí)宏沒(méi)有被展開(kāi)(“”());這一行編譯將會(huì)產(chǎn)生錯(cuò)誤,因?yàn)樗归_(kāi)為(“”());為了解決其不能展開(kāi)地問(wèn)題,我們可以多加一層中間轉(zhuǎn)換宏以實(shí)現(xiàn)所有宏地展開(kāi),如果你在編程時(shí)不確定你是否用到宏地嵌套問(wèn)題,最好都加一級(jí)中間轉(zhuǎn)換宏,以免產(chǎn)生錯(cuò)誤.例程:()()()()()()()()(“:”());將被展開(kāi),它是型地最大值,輸出
6、為::(“”());兩層宏都將能夠展開(kāi),()à((),())à(()()),輸出為:頂一下回首頁(yè)