欢迎来到天天文库
浏览记录
ID:8807950
大小:89.50 KB
页数:11页
时间:2018-04-08
《c语言里常用的宏定义》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、01:防止一个头文件被重复包含#ifndefCOMDEF_H#defineCOMDEF_H//头文件内容#endif02:重新定义一些类型防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedefunsignedcharboolean;/*Booleanvaluetype.*/typedefunsignedlongintuint32;/*Unsigned32bitvalue*/typedefunsignedshortuint16;/*Unsigned16bitvalue*/typedefunsignedcharuint8;/*Unsigned8bitva
2、lue*/typedefsignedlongintint32;/*Signed32bitvalue*/typedefsignedshortint16;/*Signed16bitvalue*/typedefsignedcharint8;/*Signed8bitvalue*///下面的不建议使用typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/typedefunsignedshortword;/*Unsinged16bitvaluetype.*/typedefunsignedlongdword;/*Unsigned32bitval
3、uetype.*/typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/typedefunsignedshortuint2;/*Unsigned16bitvaluetype.*/typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/typedefsignedcharint1;/*Signed8bitvaluetype.*/typedefsignedshortint2;/*Signed16bitvaluetype.*/typedeflongintint4;/*Signed32bit
4、valuetype.*/typedefsignedlongsint31;/*Signed32bitvalue*/typedefsignedshortsint15;/*Signed16bitvalue*/typedefsignedcharsint7;/*Signed8bitvalue*/03:得到指定地址上的一个字节或字#defineMEM_B(x)(*((byte*)(x)))#defineMEM_W(x)(*((word*)(x)))04:求最大值和最小值#defineMAX(x,y)(((x)>(y))?(x):(y))#defineMIN(x,y)(((x)<(y))?
5、(x):(y))05:得到一个field在结构体(struct)中的偏移量#defineFPOS(type,field)((dword)&((type*)0)->field)06:得到一个结构体中field所占用的字节数#defineFSIZ(type,field)sizeof(((type*)0)->field)07:按照LSB格式把两个字节转化为一个Word#defineFLIPW(ray)((((word)(ray)[0])*256)+(ray)[1])08:按照LSB格式把一个Word转化为两个字节#defineFLOPW(ray,val)(ray)[0]=((val
6、)/256);(ray)[1]=((val)&0xFF)09:得到一个变量的地址(word宽度)#defineB_PTR(var)((byte*)(void*)&(var))#defineW_PTR(var)((word*)(void*)&(var))10:得到一个字的高位和低位字节#defineWORD_LO(xxx)((byte)((word)(xxx)&255))#defineWORD_HI(xxx)((byte)((word)(xxx)>>8))11:返回一个比X大的最接近的8的倍数#defineRND8(x)((((x)+7)/8)*12:将一个字母转换为大写#de
7、fineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)–0×20):(c))13:判断字符是不是10进值的数字#defineDECCHK(c)((c)>='0'&&(c)<='9')14:判断字符是不是16进值的数字#defineHEXCHK(c)(((c)>='0'&&(c)<='9')((c)>='A'&&(c)<='F')((c)>='a'&&(c)<='f'))15:防止溢出的一个方法#defineINC_SAT(val)(val=((val)+1>(val))?(va
此文档下载收益归作者所有