来源:嵌入式大杂烩
地址:https://blog.csdn.net/xiaoxu2050/article/details/82893476
一、宏的定义与撤销
需要注意的是:
(1)宏定义应注意添加括号,这样语义会比较清晰。
(2)使用#undef可以撤销宏定义。
(3)引号中的宏定义不会被替换。
(4)宏定义的宏名必须是合法的标识符。
(5)宏定义中单、双引号必须成对出现。
二、带有参数的宏定义
需要注意的是:
(1)宏调用时参数的个数要与定义时相同。
三、跨行的宏定义,使用反斜杠 分隔
四、三个特殊符号:#,##,#@
五、常见的宏定义
1、防止头文件被重复包含
2、得到指定地址上的一个字节值或字值
3、得到一个field在结构体(struct)中的偏移量
#defineOFFSETOF(type,field)((size_t)&((type*)0)->field)
4、得到一个结构体中field所占用的字节数
#defineFSIZ(type,field)sizeof(((type*)0)->field)
5、得到一个变量的地址(word宽度)
#defineB_PTR(var)((byte*)(void*)&(var)) #defineW_PTR(var)((word*)(void*)&(var))
6、将一个字母转换为大写
#defineUPCASE(c)(((c)>='a'&&(c)<= 'z') ? ((c) - 0x20) : (c) )
7、判断字符是不是10进制的数字
#defineDECCHK(c)((c)>='0'&&(c)<= '9')
8、判断字符是不是16进制的数字
#defineHEXCHK(c)(((c)>='0'&&(c)<= '9') ||((c) >='A'&&(c)<= 'F') ||((c) >='a'&&(c)<= 'f'))
9、防止溢出的一个方法
#defineINC_SAT(val)(val=((val)+1>(val))?(val)+1:(val))
10、返回数组元素的个数
#defineARR_SIZE(a)(sizeof((a))/sizeof((a[0])))
-
嵌入式
+关注
关注
5096文章
19199浏览量
308287 -
C语言
+关注
关注
180文章
7616浏览量
138002
发布评论请先 登录
相关推荐
keil在Debug的高级用法
![keil在Debug的<b class='flag-5'>高级</b><b class='flag-5'>用法</b>](https://file.elecfans.com/web2/M00/09/16/pYYBAGD0FvWAeWpFAAAb1Fux1oA753.jpg)
Linux lsof命令的基本用法
![Linux lsof命令的基本<b class='flag-5'>用法</b>](https://file1.elecfans.com/web1/M00/F3/7F/wKgaoWcYc2mAFw5cAAA4fI5XmGk856.png)
SV中define宏定义的用法
安达发|APS高级排程高级物料需求计划
![安达发|APS<b class='flag-5'>高级</b>排程<b class='flag-5'>高级</b>物料需求计划](https://file1.elecfans.com/web2/M00/F4/09/wKgaomZ74DiAM4lCAACO5q0k_Aw676.png)
鸿蒙Ability Kit(程序框架服务)【UIAbility组件基本用法】
![鸿蒙Ability Kit(程序框架服务)【UIAbility组件基本<b class='flag-5'>用法</b>】](https://file1.elecfans.com/web2/M00/EC/1E/wKgZomZhJtuAGvhjAACAmnpjgBM543.png)
InterfaceDesinger 使用案例-v1 -DDIO用法
![InterfaceDesinger 使用案例-v1 -DDIO<b class='flag-5'>用法</b>](https://file1.elecfans.com/web2/M00/E7/39/wKgZomZLCkqAauAvAAA3UNcvPJ4334.png)
C语言#define的应用
![C语言#<b class='flag-5'>define</b>的应用](https://file1.elecfans.com/web2/M00/C3/B9/wKgaomXn42eACLumAAAag1PydyU214.png)
AWTK 开源串口屏开发(10) - 告警信息的高级用法
![AWTK 开源串口屏开发(10) - 告警信息的<b class='flag-5'>高级</b><b class='flag-5'>用法</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
评论