C语言中宏定义技巧.doc

C语言中宏定义技巧.doc

ID:56016312

大小:45.45 KB

页数:5页

时间:2020-03-15

C语言中宏定义技巧.doc_第1页
C语言中宏定义技巧.doc_第2页
C语言中宏定义技巧.doc_第3页
C语言中宏定义技巧.doc_第4页
C语言中宏定义技巧.doc_第5页
资源描述:

《C语言中宏定义技巧.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C语言宏定义方法总结写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H  //头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef  unsigned char      boolean;     /* Boolean value type. */typedef  unsigned long int  uint32;      /* Unsi

2、gned 32 bit value */typedef  unsigned short     uint16;      /* Unsigned 16 bit value */typedef  unsigned char      uint8;       /* Unsigned 8  bit value */typedef  signed long int    int32;       /* Signed 32 bit value */typedef  signed short       int16;       /* Signed 16 bit value */typedef  s

3、igned char        int8;        /* Signed 8  bit value */3,求最大值和最小值 #define  MAX( x, y ) ( ((x) > (y)) ? (x) : (y) ) #define  MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )4,得到指定地址上的一个字节或字#define  MEM_B( x )  ( *( (byte *) (x) ) )#define  MEM_W( x )  ( *( (word *) (x) ) )5,得到一个结构体中field所占用的字节数#define FSIZ

4、( type, field ) sizeof( ((type *) 0)->field )6,得到一个field在结构体(struct)中的偏移量#define FPOS( type, field )/*lint -e545 */ ( (dword) &(( type *) 0)-> field ) /*lint +e545 */7,按照LSB格式把两个字节转化为一个Word#define  FLIPW( ray ) ( (((word) (ray)[0]) * 256) + (ray)[1] )8,按照LSB格式把一个Word转化为两个字节#define  FLOPW( ray, val

5、 )  (ray)[0] = ((val) / 256); (ray)[1] = ((val) & 0xFF)9,得到一个变量的地址(word宽度)#define  B_PTR( var )  ( (byte *) (void *) &(var) )#define  W_PTR( var )  ( (word *) (void *) &(var) )10,得到一个字的高位和低位字节#define  WORD_LO(xxx)  ((byte) ((word)(xxx) & 255))#define  WORD_HI(xxx)  ((byte) ((word)(xxx) >> 8))11,返回

6、一个比X大的最接近的8的倍数#define RND8( x )       ((((x) + 7) / 8 ) * 8 )12,将一个字母转换为大写#define  UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )13,判断字符是不是16进值的数字#define  HEXCHK( c ) ( ((c) >= '0' && (c) <= '9') 

7、

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

9、

10、((c) >= 'a' && (c) <= 'f') )1

11、4,判断字符是不是10进值的数字#define  DECCHK( c ) ((c) >= '0' && (c) <= '9')15,防止溢出的一个方法#define  INC_SAT( val )  (val = ((val)+1 > (val)) ? (val)+1 : (val))16,返回数组元素的个数#define  ARR_SIZE( a )  ( sizeof( (a) ) / sizeof( (a[0]) 

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

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

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