当前位置: 首页 > news >正文

宏定义的高级应用

define KEY3_PORT GPIOE

define KEY3_PIN GPIO_Pin_1

define KEY3_EXTI_PORTSOURCE EXTI_PortSourceGPIOE

define KEY3_EXTI_PINSOURCE EXTI_PinSource1

define KEY3_EXTI_Line EXTI_Line1

define KEY4_PORT GPIOE

define KEY4_PIN GPIO_Pin_0

define KEY4_EXTI_PORTSOURCE EXTI_PortSourceGPIOE

define KEY4_EXTI_PINSOURCE EXTI_PinSource0

define KEY4_EXTI_Line EXTI_Line0

上面这一部分可以使用下面的宏定义新形式替换:

define KEY_DEFINE(n,PORT,PIN) \

static GPIO_TypeDef * key##n##_port=GPIO##PORT;
static uint16_t key##n##pin =GPIO_Pin##PIN;
static uint8_t key##n##_exti_port_src=EXTI_PortSourceGPIO##PORT;
static uint8_t key##n##_exti_pin_src =EXTI_PinSource##PIN;
static uint32_t key##n##_exti_line=EXTI_Line##PIN;
KEY_DEFINE(3,E,1)
KEY_DEFINE(4,E,0)

程序中的\是续行符,用与将一行过长的宏定义分成多行书写,提高代码的可读性。使用\的注意事项;\之后不能有任何字符包空格和注释,
实际上这部分代码宏定义展开是这样的:

define KEY_DEFINE(n,PORT,PIN) static GPIO_TypeDef * key##n##_port=GPIO##PORT; static uint16_t key##n##pin =GPIO_Pin##n; static uint8_t key##n##_exti_port_src=EXTI_PortSourceGPIO##PORT; static uint8_t key##n##_exti_pin_src =EXTI_PinSource##PIN; static uint32_t key##n##_exti_line=EXTI_Line##PIN;

使用宏定义KEY_DEFINE(3,E,1)
展开后:
static GPIO_TypeDef * key3_port=GPIOE;
static uint16_t key3_pin =GPIO_Pin_1;
static uint8_t key3_exti_port_src=EXTI_PortSourceGPIOE;
static uint8_t key3_exti_pin_src =EXTI_PinSource1;
static uint32_t key3_exti_line=EXTI_Line1;

http://www.rkmt.cn/news/46702.html

相关文章:

  • 被问性能后,我封装了这个 PHP 错误上报工具
  • 公众号中的贴纸素材有什么作用?在哪里找?
  • 公众号怎么起爆款标题?有什么好用的工具?
  • 邢台西林瓶灌装机优选指南:聚焦资质、案例与售后
  • 2025年机械磨优质厂家权威推荐榜单:冲击磨/小型机械磨/超微机械磨源头厂家精选
  • jQuery custom content scroller滚动条控件代码 - 教程
  • 搭建第一个MCP服务
  • 2025日本留学中介推荐:留学申请与语言学习一站式解决
  • 深度学习模型CNN识别恶意软件
  • 代码实例:Python 爬虫抓取与解析 JSON 数据 - 实践
  • 2025年11月上海老房翻新公司排名榜:十家口碑对比与选择指南
  • 2025年11月油烟机品牌排行:从静音到变频五大机型实测评价
  • vue3+vite使用 tailwindcss.css搭建
  • 案例大公开!某企业软件许可优化省200万,降本方案同行疯传!
  • 习题解析之:角古猜想
  • Goland 2025.2.4 11月最新版 安装、授权、使用说明
  • 牛客刷题-Day21
  • 恒利泰射频器件:国产穿心电容、高Q电容、馈通滤波器
  • LLM大模型原理与实践 学习笔记 - yi
  • 183天基于资源的约束委派
  • 封装可靠智护
  • 疯了还是天才?(下):揭秘ObjectSense的0“AI护城河”——微语言
  • 【完结】AI 编程必备 - 零基础 系统化学Python
  • Hostinger+Wordpress虚拟主机踩坑:零代码建站体验+绝对不要用支付宝付款!!
  • 2025年PVC酸洗槽实力厂家权威推荐榜单:四氟电加热器/PDF酸洗槽/储罐式换热器源头厂家精选
  • P4784 [BalticOI 2016] 城市 (Day2) 小结
  • 2025年11月geo优化服务商推荐:知名机构排行榜与口碑评价对比指南
  • 2025年11月豆包关键词排名优化推荐:主流机构排行榜高性价比选择指南
  • 2025年11月北京GEO优化公司推荐:知名机构排行榜口碑评价对比指南
  • 学习如何转换异步数据