宏定义使用技巧

本文总结了C语言中宏定义的一些常见用法,包括防止头文件重复包含、获取字的高位和低位字节、计算最大值和最小值、读取内存中的字节或字、确定结构体字段大小、获取变量地址、防止溢出操作、以及LSB格式的数据转换等实用技巧。这些技巧在编程笔试中经常出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题这几天面试题会遇到一些关于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) 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值