欢迎来到天天文库
浏览记录
ID:6601705
大小:42.50 KB
页数:16页
时间:2018-01-19
《c语言宏定义使用技巧编程技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言宏定义使用技巧编程技术写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义…… 1,防止一个头文件被重复包含 #ifndefCOMDEF_H #defineCOMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedefunsignedcharboolean;/*Booleanvaluetype.*/ typedefunsignedl
2、ongintuint32;/*Unsigned32bitvalue*/ typedefunsignedshortuint16;/*Unsigned16bitvalue*/ typedefunsignedcharuint8;/*Unsigned8bitvalue*/ typedefsignedlongintint32;/*Signed32bitvalue*/ typedefsignedshortint16;/*Signed16bitvalue*/ typedefsignedcharint8;/*Signe
3、d8bitvalue*/ //下面的不建议使用 typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/ typedefunsignedshortword;/*Unsinged16bitvaluetype.*/ typedefunsignedlongdword;/*Unsigned32bitvaluetype.*/ typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/ typedefunsignedshort
4、uint2;/*Unsigned16bitvaluetype.*/ typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/ typedefsignedcharint1;/*Signed8bitvaluetype.*/ typedefsignedshortint2;/*Signed16bitvaluetype.*/ typedeflongintint4;/*Signed32bitvaluetype.*/ typedefsignedlongsint31;/*
5、Signed32bitvalue*/ typedefsignedshortsint15;/*Signed16bitvalue*/ typedefsignedcharsint7;/*Signed8bitvalue*/ 3,得到指定地址上的一个字节或字 #defineMEM_B(x)(*((byte*)(x))) #defineMEM_W(x)(*((word*)(x))) 4,求最大值和最小值 #defineMAX(x,y)(((x)>(y))?(x):(y)) #defineMIN(x,y)(((
6、x)<(y))?(x):(y)) 5,得到一个field在结构体(struct)中的偏移量 #defineFPOS(type,field) /*lint-e545*/((dword)&((type*)0)->field)/*lint+e545*/ 6,得到一个结构体中field所占用的字节数 #defineFSIZ(type,field)sizeof(((type*)0)->field) 7,按照LSB格式把两个字节转化为一个Word #defineFLIPW(ray)((((word)(ray)
7、[0])*256)+(ray)[1]) 8,按照LSB格式把一个Word转化为两个字节 #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,得到一个字的高位和低位字节 #defineWORD_LO(***)((
8、byte)((word)(***)&255)) #defineWORD_HI(***)((byte)((word)(***)>>8)) 11,返回一个比X大的最接近的8的倍数 #defineRND8(x)((((x)+7)/8)*8) 12,将一个字母转换为大写 #defineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)-0x20):(
此文档下载收益归作者所有