c语言宏定义技巧

c语言宏定义技巧

ID:37578700

大小:129.39 KB

页数:14页

时间:2019-05-25

c语言宏定义技巧_第1页
c语言宏定义技巧_第2页
c语言宏定义技巧_第3页
c语言宏定义技巧_第4页
c语言宏定义技巧_第5页
资源描述:

《c语言宏定义技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、c语言宏定义技巧1,防止一个头文件被重复包含#ifndefCOMDEF_H#defineCOMDEF_H//头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedefunsignedcharboolean;/*Booleanvaluetype.*/typedefunsignedlongintuint32;/*Unsigned32bITvalue*/typedefunsignedshortuint16;/*Unsigned16bitvalue*/typedefunsignedcharuin

2、t8;/*Unsigned8bitvalue*/typedefsignedlongintint32;/*Signed32bitvalue*/typedefsignedshortint16;/*Signed16bitvalue*/typedefsignedcharint8;/*Signed8bitvalue*///下面的不建议使用typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/typedefunsignedshortword;/*Unsinged16bitvaluetype.*/typedefunsig

3、nedlongdword;/*Unsigned32bitvaluetype.*/typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/typedefunsignedshortuint2;/*Unsigned16bitvaluetype.*/typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/typedefsignedcharint1;/*Signed8bitvaluetype.*/typedefsignedshortint2;/*Signed16bitv

4、aluetype.*/typedeflongintint4;/*Signed32bitvaluetype.*/typedefsignedlongsint31;/*Signed32bitvalue*/typedefsignedshortsint15;/*Signed16bitvalue*/typedefsignedcharsint7;/*Signed8bitvalue*/3,得到指定地址上的一个字节或字#defineMEM_B(x)(*((byte*)(x)))#defineMEM_W(x)(*((word*)(x)))4,求最大值和最小值#define

5、MAX(x,y)(((x)>(y))?(x):(y))#defineMIN(x,y)(((x)<(y))?(x):(y))5.得到一个field在结构体(struct)中的偏移量#defineFPOS(type,field)((dword)&((type*)0)->field)6.得到一个结构体中field所占用的字节数#defineFSIZ(type,field)sizeof(((type*)0)->field)c语言宏定义技巧7,按照LSB格式把两个字节转化为一个Word#defineFLIPW(ray)((((word)(ray)[0])*25

6、6)+(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)((b

7、yte)((word)(xxx)>>8))11,返回一个比X大的最接近的8的倍数#defineRND8(x)((((x)+7)/8)*8)12,将一个字母转换为大写#defineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)-0x20):(c))13,判断字符是不是10进值的数字#defineDECCHK(c)((c)>='0'&&(c)<='9')14,判断字符是不是16进值的数字#defineHEXCHK(c)(((c)>='0'&&(c)<='9')

8、

9、((c)>='A'&&(c)<='F')

10、

11、((c)>='a'&&(c

12、)<='f'))15,防止溢出的一个方法#defineINC_SAT(val)(val=((v

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。