3

上周我接受了一次采访。我被要求编写一个宏来读取内存位置(比如0x2000)。我在正常编程中编写了代码,但我无法编写宏。
请帮我弄清楚如何为下面的代码编写宏:

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
4

4 回答 4

5

像这样的东西?

#define READ_CHAR_AT(address) *((char *) (address))
于 2012-05-28T09:59:47.947 回答
2
#define MEMVAL(addr) ((*((char*)(addr)) = 36), *((char*)(addr)))

如果要将其设置为 36,然后再次读取该值,请使用序列运算符。(&& 也可以,因为 36 是真的......)

于 2012-05-28T10:06:18.570 回答
1
#define memval(addr) *((char*)(addr))
于 2012-05-28T10:00:13.250 回答
0
#define VALUE_AT_ADDRESS(address,type) *((type*) (address))
于 2012-09-13T10:34:43.807 回答