2012-05-28 26 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)) 
相关问题