c - #define 中的 C 宏括号和星号
问题描述
我有来自 Nordic SoC 芯片的实时时钟 (RTC) 驱动程序的这行 C 代码。我试图寻找它的作用,但搜索起来有点困难。谁能告诉我它是做什么的?尤其是括号和星号。
#define NRF_RTC0 ((NRF_RTC_Type *) NRF_RTC0_BASE)
NRF_RTC_Type是一个结构的 typedef,而NRF_RTC0_BASE是 #define'ed 为 0x4000B000UL。
谢谢!
解决方案
NRF_RTC0_BASE
标识从地址开始的一组硬件寄存器4000B000
。NRF_RTC_Type
定义了各个寄存器的映射,它可能会添加volatile
限定符以确保它们被视为 I/O 而不是普通内存。
括号进行类型转换操作,星号表示指针类型。
使用宏NRF_RTC0
以结构化方式访问寄存器。
推荐阅读
- maven - 天蓝色管道 Maven 发布
- amazon-web-services - 我应该如何使用非代理 lambda 和我的 REST API 网关模型来实现我的 lambda 处理程序?
- spring-boot - 如何在 json 返回对象 spring boot 中包含 Embedded 属性
- scala - 具有多个参数的 Scala 特征覆盖方法
- excel - VLC 时间戳通过按钮导出到记事本/excel
- api - 如何将 API 信息转化为字典
- swift - 在 SwiftUI 上更改颜色视图
- javascript - 如何将两个数组合二为一?
- web - 为什么在 homeurl.com/landing 页面上有一个域landingpage.homeurl.com?
- python - 时间数据 mm/dd/YYYY 与指定的格式不匹配