列举一些成熟软件中C语言常用的宏定义

使用宏定义可以防止出错,提高可移植性,可读性,方便性等。
下面列举了一些成熟软件中常用的宏定义。
重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植:
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)  field ) /*lint +e545 */  
得到一个结构体中field所占用的字节数:
#define fsiz( type, field ) sizeof( ((type *) 0)->field )  
按照lsb格式把两个字节转化为一个word:
1#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 ) ( ((c) >= 'a' && (c) = '0' && (c) = '0' && (c) = 'a' && (c) = 'a' && (c)  (val)) ? (val)+1 : (val))  
返回数组元素的个数:
#define arr_size( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )


基于区块链技术的全球文体娱乐数字资产交易平台HOTchain热度链介绍
机器学习成为材料科学中复杂数据分析和信息挖掘的有力武器
机器学习、高速网络和大内存在这个数据时代并列称王
三星开始量产车载超低功耗UFS 3.1闪存:最大512GB
fireflyCORE-3399主板JD4--Linux开发简介
列举一些成熟软件中C语言常用的宏定义
PS 2键盘接口转普通键盘接口转接器
卫星中频开关IC MAX12005
戴森吸尘器缺失的擦地功能怎么补?来试试这款小狗擦地刷
交通信号灯PLC控制程序设计与调试
服务器数据恢复—XFS文件系统数据恢复案例
解读数商云供应链系统的优势能力,打造医疗器械行业数字化转型新生态
高通让手机快充效率再提升30% 实现15W以上无线充电功率
知行科技为何能在资本寒冬的2018获得投资机构的亲睐
使用HyperLynx修复和解决信号完整性问题
保千里机器人发布会即将举行:2017年1月6日,深圳爆发机器人大战
选取MCU的时候应该考虑哪些因素?
Linux内核中RCU的用法
最新千元机盘点:荣耀8青春版、360N5、红米Note4X、魅蓝Note5,高性价比高颜值你买谁?
电路过流保护中自恢复保险丝与熔断保险丝的差别点分析