我正在分析一个外设驱动程序的文件并发现一些寄存器映射代码。我有关于指针的基本知识,但无法理解下面的代码。指向易失性数据的指针(*((volatile volatile uint32_t *)0x40000000))
#define WATCHDOG0_LOAD_R (*((volatile uint32_t *)0x40000000))
我知道它将标识符WATCHDOG0_LOAD_R
定义为寄存器的内存地址。但我无法理解右侧的语法。任何人都可以详细解释我为什么这个指针是以这种方式写的吗?
你不明白'0x40000000'或什么'volatile uint32_t *'的含义? –
请选择其中一个'C'和'C++'标记,除非您特意询问这两种语言之间的交互。 – Quentin
您可能还会从阅读[此问题](http://stackoverflow.com/q/4166201/212858)中受益,该代码以类似的代码结束。 – Useless