2012-05-28 48 views
3

上週我接受了採訪。我被要求寫一個宏來讀取一個內存位置(比如0x2000)。 我在正常編程中編寫了代碼,但是我無法寫入宏。
請幫我弄清楚如何寫下面的代碼的宏:如何編寫一個宏來訪問C中的內存數據?

char *address = (char*)0x2000; // address is a pointer to address 3000 char val 

*address = 36; // write 36 to 8 bit location at address 

val = *address; // read 8 bit value from address 

回答

5

像這樣的事情?

#define READ_CHAR_AT(address) *((char *) (address)) 
1
#define memval(addr) *((char*)(addr)) 
2
#define MEMVAL(addr) ((*((char*)(addr)) = 36), *((char*)(addr))) 

如果你想要再次設置爲36,然後讀取值,使用順序操作。 (& &也可以,因爲36是真的......)

0
#define VALUE_AT_ADDRESS(address,type) *((type*) (address)) 
相關問題