的含义是什么?
*((volatile UINT32*)(a)) ?
用C语言编写?
举个例子。
答案 0 :(得分:3)
在第一次将其强制转换为“指向易变a
的指针”之后,它取消引用UINT32
。
有更多的括号比需要的更多,最好写成:
*(volatile UINT32 *) a
这也是一样的。你希望在这里有更多的代码,当然,要么写:
*(volatile UINT32 *) a = 4711;
将4711
写入a
中包含的地址,确保(由于volatile
)写入未被优化,即使它从编译器的角度来看似乎毫无意义观点。
或阅读:
const UINT32 packetCounter = *(volatile UINT32 *) a;
读取a
中地址的当前值,并将其存储在名为packetCounter
的本地常量变量中。如果a
是某个I / O寄存器的地址,那么这就是它的样子。同样由于volatile
,读取必须发生,它不能被优化或缓存,即使它对编译器来说似乎没有意义。这在I / O寄存器中很常见。