#define的高级用法简介

来源:嵌入式大杂烩
地址: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)='0'&&(c)='0'&&(c)='a'&&(c)='a'&&(c)(val))?(val)+1:(val))
10、返回数组元素的个数
#definearr_size(a)(sizeof((a))/sizeof((a[0])))

雅马哈公布了一款可堪地表最强行列的电机 配置到1877马力!
一文知道NB-IOT的成本优势
采用微电脑处理技术的家庭无线电话防盗报警系统设计
三星推出全新智能激光投影仪
什么是软交换_软交换介绍
#define的高级用法简介
电机扭矩一般多大 电机扭矩与电流/转速的关系
数字哨兵防疫解决方案,实现扫描健康码、刷身份证快速核验通行
性价比不代表一切 笔记本购买误区
协鑫集成投资半导体产业基金暨关联交易的进展报告
T型三电平逆变器的工作原理及Simulink仿真
电网建设的“雄安质量”:世界首例特高压输电线路切改工程
腾讯即将在高新区打造长三角区域首个腾讯数字产业基地
RÖtt KRÖN全球首发,多晶锆宝石音腔真无线耳机重磅问世!
用于化学分析的Si各向异性湿法化学蚀刻
DC-DC Conversion Without Induc
AT89C52单片机与ARINC429航空总线接口设计
CDMA2000 1x EV-DO有什么技术特点?
罗姆推SiC制肖特基势垒二极管 正向电压仅为1.35V
好用的蓝牙耳机该如何选择呢?平价蓝牙耳机这些挺好用!