宏定义的高级应用

news/2025/11/11 17:55:28/文章来源:https://www.cnblogs.com/wb-code/p/19211186

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.mzph.cn/news/962607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被问性能后,我封装了这个 PHP 错误上报工具

介绍 PHP 日志库 hejunjie/lazylog 的实现:用 proc_open / exec 伪异步上报异常,支持本地日志与常驻内存框架优化,轻量高效,适合生产环境使用最近我把自己常用的一套错误上报逻辑封装成了一个 Composer 包,叫 ​h…

公众号中的贴纸素材有什么作用?在哪里找?

不知道你有没有这种感觉:公众号文章写好了,排版也收拾得挺干净,但总觉得页面有点“素”,少了点能抓住眼球的小趣味。 这时候,贴纸素材就派上用场了。 你可能已经用过一些贴纸,比如在段落之间加一条可爱的分割线,…

国标GB28181算法算力平台EasyGBS:深度解析全场景视频调阅功能与行业实战应用

国标GB28181算法算力平台EasyGBS:深度解析全场景视频调阅功能与行业实战应用在视频监控全面联网、智能化升级的时代,单纯的点对点监控已无法满足复杂业务的需求。核心诉求在于:如何在一个平台上,随时随地、高效稳定…

2025出国留学机构综合实力榜:排名前十的留学中介特色分析

2025出国留学机构综合实力榜:排名前十的留学中介特色分析Posted on 2025-11-11 17:46 打不死的小强996 阅读(0) 评论(0) 收藏 举报在当前多元化的留学环境下,选择一家合适的出国留学中介成为许多家庭的重要决策…

公众号怎么起爆款标题?有什么好用的工具?

不知道你有没有这种感觉:公众号文章内容写得挺用心,但最后却卡在了起标题这一步。脑子里想来想去,就是那几个老套路,觉得没啥吸引力。 说实话,一个好的标题,真的决定了文章能不能被打开。我之前也特别头疼这个,…

邢台西林瓶灌装机优选指南:聚焦资质、案例与售后

在邢台地区,制药与生物制剂企业近年来对西林瓶灌装设备的需求持续增长。随着本地医药产业链的完善,越来越多中小型药企和科研机构开始关注设备采购中的价格适配性问题。根据2024年华北区域制药装备用户调研数据显示,…

基于SpringBoot+Vue的个人理财系统管理系统设计与建立【Java+MySQL+MyBatis完整源码】

基于SpringBoot+Vue的个人理财系统管理系统设计与建立【Java+MySQL+MyBatis完整源码】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

python使用PyInstaller打包成exe

PyInstaller是目前最流行的Python打包工具之一,其安装过程极为简便。在Windows系统上,只需通过pip命令即可完成安装: pip install pyinstaller 安装完成后,可通过pyinstaller --version验证安装是否成功。对于国内…

2025年机械磨优质厂家权威推荐榜单:冲击磨/小型机械磨/超微机械磨源头厂家精选

在粉体材料技术飞速发展的今天,机械磨作为实现物料超微化、精细化处理的核心装备,其性能直接决定了新能源、新材料、制药等高端领域的生产效能与产品质量。为帮助您精准定位优质供应商,本文基于企业研发实力、技术专…

jQuery custom content scroller滚动条控件代码 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【APIE出版 | EI检索快速稳定】2025年机电一体化与轨道、交通国际学术会议(MRT 2025)

由黄河科技学院主办,2025年机电一体化与轨道交通国际学术会议(MRT 2025)于2025年11月14-16日在河南郑州举办。【APIE出版】 【EI检索快速稳定】 2025年机电一体化与轨道交通国际学术会议(MRT 2025) 2025 Internatio…

搭建第一个MCP服务

MCP 基本概念 Model Context Protocol (MCP) 是一种协议,用来 在多个模型或服务之间传递和管理上下文信息。 简单来说,当你调用大模型或多个模型协作完成任务时,每个模型可能需要知道之前的对话、输入或者其他环境信…

React-router v7 配置 Suspense+lazy fallback第二次不显示

最近这个项目为了使用户交互更加友好,每个页面路由都采用了lazyload的方式进行加载,分离js以使按需进行加载,其中,我将 Suspense 封装进入了一个函数,通过函数返回对应内容: export const LazyImport: React.FC&…

spark read mongodb拉取的数据行数和源库不一致

1- 如果自定义了schema,可能是字段类型和schema种的字段类型不一致,并且不能强转造成; 2- _id类型有多种,会造成分片信息混乱

PV 与 PVC 的“绑定”动作真正发生的时间点

PV 与 PVC 的“绑定”动作真正发生的时间点,取决于 StorageClass 的 volumeBindingMode 字段,场景可以分成两类:Immediate(默认)PVC 一旦创建,控制器的绑定循环就会立即为它挑选符合条件的 PV(或动态新建一个 P…

2025日本留学中介推荐:留学申请与语言学习一站式解决

2025日本留学中介推荐:留学申请与语言学习一站式解决Posted on 2025-11-11 17:41 打不死的小强996 阅读(0) 评论(0) 收藏 举报在当前日本留学申请过程中,许多学生反映在选择中介机构时面临信息不够透明、申请指…

2025年11月高温老化房及环境试验设备推荐厂家:步入式恒温试验室/步入式高低温湿热试验室/大型高低温湿热试验室/汽车零部件、逆变器、电子元器件等场景适用

随着新能源、汽车电子、半导体等行业对产品可靠性验证要求的不断提升,高温老化房、高低温湿热试验室等环境试验设备在研发与质检环节中的重要性日益凸显。采购方普遍关注设备的温控精度、运行稳定性、非标定制能力以及…

【ACM出版 | 最快会后4个月检索 | 往届均已成功见刊并被EI检索】第三届人工智能、系统与网络安全国际学术会议 (AISNS 2025)

第三届人工智能、系统与网络安全国际学术会议(AISNS 2025)定于2025年12月26-28日在湖南湘潭市召开。【主办单位:湖南工程学院,会议落地有保障】 【沿用往届出版社,已申请到ACM出版,见刊检索有保障】 第三届人工智…

it的尽头是炒股

it的尽头是炒股IF CODELIKE(399)=0 AND CODELIKE(000001)=0 THEN DRAWTEXT_FIX(ISLASTBAR, 0.25,0.01,0,地域+: + BLOCK(2, 8)),Colorred; IF CODELIKE(399)=0 AND CODELIKE(000001)=0 THEN DRAWTEXT_FIX(ISLASTBAR, 0…

Windows 电脑 FTP 服务器配置

环境:Windows 10 电脑 一、开启Windows FTP 功能 控制面板 - 程序和功能 - 启用或关闭windows功能防火墙允许FTP 通过或直接关闭防火墙 控制面板 - Windows Defender防火墙 - 允许应用或功能通过windows defender 防火…