预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言宏定义技巧C语言宏定义技巧写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。以下是小编为大家搜索整理的C语言宏定义技巧,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!1、防止一个头文件被重复包含#ifndefCOMDEF_H#defineCOMDEF_H//头文件内容#endif2、重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedefunsignedcharboolean;/*Booleanvaluetype.*/typedefunsignedlongintuint32;/*Unsigned32bitvalue*/typedefunsignedshortuint16;/*Unsigned16bitvalue*/typedefunsignedcharuint8;/*Unsigned8bitvalue*/typedefsignedlongintint32;/*Signed32bitvalue*/typedefsignedshortint16;/*Signed16bitvalue*/typedefsignedcharint8;/*Signed8bitvalue*///下面的不建议使用typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/typedefunsignedshortword;/*Unsinged16bitvaluetype.*/typedefunsignedlongdword;/*Unsigned32bitvaluetype.*/typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/typedefunsignedshortuint2;/*Unsigned16bitvaluetype.*/typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/typedefsignedcharint1;/*Signed8bitvaluetype.*/typedefsignedshortint2;/*Signed16bitvaluetype.*/typedeflongintint4;/*Signed32bitvaluetype.*/typedefsignedlongsint31;/*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)(((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)[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(xxx)((byte)((word)(xxx)&255))#defineWORD_HI(xxx)((byte)((word)(xxx)>>8))11、返回一个比X大的最接近的8的倍数#defineRND8(x)((((x)+7)/8)*8)12、将一个字母转换为大写#defineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)-0x20):(