我想访问硬件寄存器(64位,只有40个LSb的地址)中的地址所指向的32位数据。所以,我做的:当指针和数据宽度不同时指针间接寻址
paddr_t address = read_hw(); // paddr_t is unsigned long long
unsigned int value = *(unsigned int*) address; // error: cast to pointer from integer of different size
unsigned int value2 = (unsigned int) *((paddr_t*) address); // error: cast to pointer from integer of different size
会是什么正确的方式来做到这一点没有编译器错误(我用-Werror)?
我没有补充说我正在使用交叉编译器。所以我没有printf的奢侈! – Jeenu 2010-12-09 08:52:25