【发布时间】:2021-07-22 08:24:06
【问题描述】:
我有来自 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转换为指向NRF_RTC_TYPE的指针 -
NRF_RTC0_BASE is typedef'ed as 0x4000B000UL是什么意思?你不能 typedef 到一个值,你只能 typedef 到一个类型。 -
如果这是一个谜,那不是一件坏事,但它确实表明你需要一个好的 reference book 来了解 C 的工作原理。我们无法在此处的答案中解释所有 C,您将需要进行大量学习才能了解正在发生的事情。这并不是那么复杂,但是在我们给出的任何解释都有意义之前,有很多原则需要吸收。
-
@tadman。感谢您分享这个。我一定会在我的 C 上工作。
标签: c memory arm embedded driver