成都网站建设重庆最加科技,wordpress 404页面插件,商品推广软文写作500字,wordpress 主题 破解版使用宏定义可以防止出错#xff0c;提高可移植性#xff0c;可读性#xff0c;方便性等。 下面列举了一些成熟软件中常用的宏定义。
重新定义一些基本类型
重新定义一些类型#xff0c;防止由于各种平台和编译器的不同#xff0c;而产生的类型字节数差异#xff0c;方便…使用宏定义可以防止出错提高可移植性可读性方便性等。 下面列举了一些成熟软件中常用的宏定义。
重新定义一些基本类型
重新定义一些类型防止由于各种平台和编译器的不同而产生的类型字节数差异方便移植 typedef unsigned char boolean; /* Boolean value type. / typedef unsigned long int uint32; / Unsigned 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 signed char int8; / Signed 8 bit value */
求最大值和最小值:
#define MAX( x, y ) ( ((x) (y)) ? (x) : (y) ) #define MIN( x, y ) ( ((x) (y)) ? (x) : (y) )
得到一个field在结构体(struct)中的偏移量:
#define FPOS( type, field ) /*lint -e545 */ ( (dword) (( type *) 0)- field ) /*lint e545 */
得到一个结构体中field所占用的字节数
#define FSIZ( type, field ) sizeof( ((type *) 0)-field )
按照LSB格式把两个字节转化为一个Word
#define FLIPW( ray ) ( (((word) (ray)[0]) * 256) (ray)[1] )
按照LSB格式把一个Word转化为两个字节
#define FLOPW( ray, val ) (ray)[0] ((val) / 256); (ray)[1] ((val) 0xFF)
得到一个变量的地址(word宽度)
#define B_PTR( var ) ( (byte *) (void *) (var) ) #define W_PTR( var ) ( (word *) (void *) (var) )
得到一个字的高位和低位字节
#define WORD_LO(xxx) ((byte) ((word)(xxx) 255)) #define WORD_HI(xxx) ((byte) ((word)(xxx) 8))
将一个字母转换为大写
#define UPCASE( c ) ( (© ‘a’ © ‘z’) ? (© - 0x20) : © )
判断字符是不是10进制的数字
#define DECCHK( c ) (© ‘0’ © ‘9’)
判断字符是不是16进制的数字
#define HEXCHK( c ) ( (© ‘0’ © ‘9’) ||(© ‘A’ © ‘F’) ||(© ‘a’ © ‘f’) )
防止一个头文件被重复包含
#ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif
防止溢出的一个方法
#define INC_SAT( val ) (val ((val)1 (val)) ? (val)1 : (val))
返回数组元素的个数
#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )