c语言宏定义使用技巧编程技术

c语言宏定义使用技巧编程技术

ID:15728883

大小:42.50 KB

页数:16页

时间:2018-08-05

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

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

1、C语言宏定义使用技巧编程技术写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义……  1,防止一个头文件被重复包含  #ifndefCOMDEF_H  #defineCOMDEF_H  //头文件内容  #endif  2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。  typedefunsignedcharboolean;/*Booleanvaluetype.*/  typedefunsignedlongintu

2、int32;/*Unsigned32bitvalue*/  typedefunsignedshortuint16;/*Unsigned16bitvalue*/  typedefunsignedcharuint8;/*Unsigned8bitvalue*/  typedefsignedlongintint32;/*Signed32bitvalue*/  typedefsignedshortint16;/*Signed16bitvalue*/  typedefsignedcharint8;/*Signed8bitvalue*/  

3、//下面的不建议使用  typedefunsignedcharbyte;/*Unsigned8bitvaluetype.*/  typedefunsignedshortword;/*Unsinged16bitvaluetype.*/  typedefunsignedlongdword;/*Unsigned32bitvaluetype.*/  typedefunsignedcharuint1;/*Unsigned8bitvaluetype.*/  typedefunsignedshortuint2;/*Unsigned16bit

4、valuetype.*/  typedefunsignedlonguint4;/*Unsigned32bitvaluetype.*/  typedefsignedcharint1;/*Signed8bitvaluetype.*/  typedefsignedshortint2;/*Signed16bitvaluetype.*/  typedeflongintint4;/*Signed32bitvaluetype.*/  typedefsignedlongsint31;/*Signed32bitvalue*/  typedefs

5、ignedshortsint15;/*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在结构体(s

6、truct)中的偏移量  #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转化为两个

7、字节  #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(***)((byte)((word)(***)&255))  #defineWORD_HI(***)((byt

8、e)((word)(***)>>8))  11,返回一个比X大的最接近的8的倍数  #defineRND8(x)((((x)+7)/8)*8)  12,将一个字母转换为大写  #defineUPCASE(c)(((c)>='a'&&(c)<='z')?((c)-0x20):(

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

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

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