宏定义使用技巧

来源:互联网 发布:看表情猜网络用语 编辑:程序博客网 时间:2024/06/05 06:47

题这几天面试题会遇到一些关于DEFINE 的用法,在这里做下总结,红色部分笔试常见题型。


1.防止一个头文件被重复包含

#ifndef COMDEF_H

#define COMDEF_H

//头文件内容

#endif


2.得到一个字的高位和地位字节

#define WORD_LO(***) ((byte)  ((word)  (***)  & 255))

#define WORD_HI(***) ((byte)  ((word)  (***)  >> 8))


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 (type ,filed)  sizeof ( ( (type *) 0) -> field)


6.得到一个变量地址

#define B_PTR (VAR) (  (byte *) (void *)  &(var))

#define W_PTR (VAR) (  (byte *) (void *)  &(var))


7.防止溢出的一个方法

#define INC_SAT (val)  (val = ( (val)+1)  > (val) ) ? (val) +1 : (val) )


8.按照LSB格式把两个字转化成一个word

#define FLIPW (ray)  (  ( (  (word)  (ray) [0]) * 256 ) + (ray) [1])


9.按照LSB格式把一个word转化成两个字

#define flopw ( ray,val)    (ray) [0] = ((val) / 256)  (ray) [1] =  ((val) & 0xff) 


原创粉丝点击