我想訪問硬件寄存器(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