用 union 的大小定义指向内存的指针
Define pointer to memory with the size of union
我正在为下面的演示代码苦苦挣扎:
typedef volatile union
{
unsigned U;
int I;
struct
{
unsigned some_array:32;
} B;
} bar;
#define foo (*( bar*) 0xABCDU)
我知道 0xABCDU
是内存中的某个地址。
我怎样才能阅读英文的 foo
?
( bar*) 0xABCDU
被 0xABCDU
重新解释为指向 bar
的指针。
*( bar*) 0xABCDU
是取消引用的指针(如果是 C++,则为引用)。
(外括号是为了防止由于运算符的优先级而可能造成的误解)
foo
是unionbar
指针引用的对象。指向 bar 的指针具有从整数常量转换而来的值。
我正在为下面的演示代码苦苦挣扎:
typedef volatile union
{
unsigned U;
int I;
struct
{
unsigned some_array:32;
} B;
} bar;
#define foo (*( bar*) 0xABCDU)
我知道 0xABCDU
是内存中的某个地址。
我怎样才能阅读英文的 foo
?
( bar*) 0xABCDU
被 0xABCDU
重新解释为指向 bar
的指针。
*( bar*) 0xABCDU
是取消引用的指针(如果是 C++,则为引用)。
(外括号是为了防止由于运算符的优先级而可能造成的误解)
foo
是unionbar
指针引用的对象。指向 bar 的指针具有从整数常量转换而来的值。