C語言宏定義技巧(常用宏定義)

C語言宏定義技巧(常用宏定義)

ID:47056006

大小:30.50 KB

頁數(shù):11頁

時間:2019-07-10

C語言宏定義技巧(常用宏定義)_第1頁
C語言宏定義技巧(常用宏定義)_第2頁
C語言宏定義技巧(常用宏定義)_第3頁
C語言宏定義技巧(常用宏定義)_第4頁
C語言宏定義技巧(常用宏定義)_第5頁
資源描述:

《C語言宏定義技巧(常用宏定義)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

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

2、nedshortuint16;/*Unsigned16bitvalue*/typedefunsignedcharuint8;/*Unsigned8bitvalue*/typedefsignedlongintint32;/*Signed32bitvalue*/typedefsignedshortint16;/*Signed16bitvalue*/typedefsignedcharint8;/*Signed8bitvalue*///下面的不建議使用typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/typedefunsignedshortw

3、ord;/*Unsinged16bitvaluetype.*/typedefunsignedlongdword;/*Unsigned32bitvaluetype.*/typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/typedefunsignedshortuint2;/*Unsigned16bitvaluetype.*/typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/typedefsignedcharint1;/*Signed8bitvaluetype.*/typedefsig

4、nedshortint2;/*Signed16bitvaluetype.*/typedeflongintint4;/*Signed32bitvaluetype.*/typedefsignedlongsint31;/*Signed32bitvalue*/typedefsignedshortsint15;/*Signed16bitvalue*/typedefsignedcharsint7;/*Signed8bitvalue*/3,得到指定地址上的一個字節(jié)或字#defineMEM_B(x)(*((byte*)(x)))#defineMEM_W(x)(*((word*)(x)))4,求最大值

5、和最小值#defineMAX(x,y)(((x)>(y))?(x):(y))#defineMIN(x,y)(((x)<(y))?(x):(y))5,得到一個field在結(jié)構(gòu)體(struct)中的偏移量#defineFPOS(type,field)/*lint-e545*/((dword)&((type*)0)->field)/*lint+e545*/6,得到一個結(jié)構(gòu)體中field所占用的字節(jié)數(shù)#defineFSIZ(type,field)sizeof(((type*)0)->field)7,按照LSB格式把兩個字節(jié)轉(zhuǎn)化為一個Word#defineFLIPW(ray)((((word

6、)(ray)[0])*256)+(ray)[1])8,按照LSB格式把一個Word轉(zhuǎn)化為兩個字節(jié)#defineFLOPW(ray,val)(ray)[0]=((val)/256);(ray)[1]=((val)&0xFF)9,得到一個變量的地址(word寬度)#defineB_PTR(var)((byte*)(void*)&(var))#defineW_PTR(var)((word*)(void*)&(var))10,得到一個字的高位和低位字節(jié)#defineWORD_LO(xxx)((byte)((word)(xxx)&255))#defineWORD_HI(xxx)((byte

7、)((word)(xxx)>>8))11,返回一個比X大的最接近的8的倍數(shù)#defineRND8(x)((((x)+7)/8)*8)12,將一個字母轉(zhuǎn)換為大寫#defineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)-0x20):(c))13,判斷字符是不是10進(jìn)值的數(shù)字#defineDECCHK(c)((c)>='0'&&(c)<='9')14,判斷字符是不是16進(jìn)值的數(shù)字#defineHEXCHK(c)(((c)>='0'&&

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

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

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