#define 中的 C 宏括号和星号

C macro parenthesis and asterisk in #define

我有这行来自 Nordic SoC 芯片的实时时钟 (RTC) 驱动程序的 C 代码。我试图寻找它的作用,但搜索起来有点困难。任何人都可以让我知道它是做什么的吗?特别是括号和星号。

#define NRF_RTC0                        ((NRF_RTC_Type            *) NRF_RTC0_BASE)

NRF_RTC_Type 是结构的类型定义,NRF_RTC0_BASE 被#define'ed 为 0x4000B000UL。

谢谢!

NRF_RTC0_BASE 标识一组位于地址 4000B000 开始的硬件寄存器。 NRF_RTC_Type 定义了各个寄存器的映射,它可能添加了 volatile 限定符以确保它们被视为 I/O 而不是普通内存。

圆括号表示类型转换操作,星号表示指针类型。

使用宏 NRF_RTC0 以结构化方式访问寄存器。