c語(yǔ)言宏定義使用技巧編程技術(shù)

c語(yǔ)言宏定義使用技巧編程技術(shù)

ID:15728883

大?。?2.50 KB

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

時(shí)間:2018-08-05

c語(yǔ)言宏定義使用技巧編程技術(shù)_第1頁(yè)
c語(yǔ)言宏定義使用技巧編程技術(shù)_第2頁(yè)
c語(yǔ)言宏定義使用技巧編程技術(shù)_第3頁(yè)
c語(yǔ)言宏定義使用技巧編程技術(shù)_第4頁(yè)
c語(yǔ)言宏定義使用技巧編程技術(shù)_第5頁(yè)
資源描述:

《c語(yǔ)言宏定義使用技巧編程技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、C語(yǔ)言宏定義使用技巧編程技術(shù)寫好C語(yǔ)言,漂亮的宏定義很重要,使用宏定義可以防止出錯(cuò),提高可移植性,可讀性,方便性等等。下面列舉一些成熟軟件中常用得宏定義……  1,防止一個(gè)頭文件被重復(fù)包含  #ifndefCOMDEF_H  #defineCOMDEF_H  //頭文件內(nèi)容  #endif  2,重新定義一些類型,防止由于各種平臺(tái)和編譯器的不同,而產(chǎn)生的類型字節(jié)數(shù)差異,方便移植。  typedefunsignedcharboolean;/*Booleanvaluetype.*/  typedefunsignedlongintu

2、int32;/*Unsigned32bitvalue*/  typedefunsignedshortuint16;/*Unsigned16bitvalue*/  typedefunsignedcharuint8;/*Unsigned8bitvalue*/  typedefsignedlongintint32;/*Signed32bitvalue*/  typedefsignedshortint16;/*Signed16bitvalue*/  typedefsignedcharint8;/*Signed8bitvalue*/  

3、//下面的不建議使用  typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/  typedefunsignedshortword;/*Unsinged16bitvaluetype.*/  typedefunsignedlongdword;/*Unsigned32bitvaluetype.*/  typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/  typedefunsignedshortuint2;/*Unsigned16bit

4、valuetype.*/  typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/  typedefsignedcharint1;/*Signed8bitvaluetype.*/  typedefsignedshortint2;/*Signed16bitvaluetype.*/  typedeflongintint4;/*Signed32bitvaluetype.*/  typedefsignedlongsint31;/*Signed32bitvalue*/  typedefs

5、ignedshortsint15;/*Signed16bitvalue*/  typedefsignedcharsint7;/*Signed8bitvalue*/  3,得到指定地址上的一個(gè)字節(jié)或字  #defineMEM_B(x)(*((byte*)(x)))  #defineMEM_W(x)(*((word*)(x)))  4,求最大值和最小值  #defineMAX(x,y)(((x)>(y))?(x):(y))  #defineMIN(x,y)(((x)<(y))?(x):(y))  5,得到一個(gè)field在結(jié)構(gòu)體(s

6、truct)中的偏移量  #defineFPOS(type,field)  /*lint-e545*/((dword)&((type*)0)->field)/*lint+e545*/  6,得到一個(gè)結(jié)構(gòu)體中field所占用的字節(jié)數(shù)  #defineFSIZ(type,field)sizeof(((type*)0)->field)  7,按照LSB格式把兩個(gè)字節(jié)轉(zhuǎn)化為一個(gè)Word  #defineFLIPW(ray)((((word)(ray)[0])*256)+(ray)[1])  8,按照LSB格式把一個(gè)Word轉(zhuǎn)化為兩個(gè)

7、字節(jié)  #defineFLOPW(ray,val)  (ray)[0]=((val)/256);  (ray)[1]=((val)&0xFF)  9,得到一個(gè)變量的地址(word寬度)  #defineB_PTR(var)((byte*)(void*)&(var))  #defineW_PTR(var)((word*)(void*)&(var))  10,得到一個(gè)字的高位和低位字節(jié)  #defineWORD_LO(***)((byte)((word)(***)&255))  #defineWORD_HI(***)((byt

8、e)((word)(***)>>8))  11,返回一個(gè)比X大的最接近的8的倍數(shù)  #defineRND8(x)((((x)+7)/8)*8)  12,將一個(gè)字母轉(zhuǎn)換為大寫  #defineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)-0x20):(

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(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)系客服處理。