C語(yǔ)言常用宏定義技巧.doc

C語(yǔ)言常用宏定義技巧.doc

ID:57896847

大?。?7.00 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2020-04-02

C語(yǔ)言常用宏定義技巧.doc_第1頁(yè)
C語(yǔ)言常用宏定義技巧.doc_第2頁(yè)
C語(yǔ)言常用宏定義技巧.doc_第3頁(yè)
資源描述:

《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è)

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。