上周我接受了采访。我被要求写一个宏来读取一个内存位置(比如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
答案 0 :(得分:5)
这样的东西?
#define READ_CHAR_AT(address) *((char *) (address))
答案 1 :(得分:2)
#define MEMVAL(addr) ((*((char*)(addr)) = 36), *((char*)(addr)))
如果要将其设置为36,则再次读取该值,使用序列运算符。 (&&也可以,因为36是真的......)
答案 2 :(得分:1)
#define memval(addr) *((char*)(addr))
答案 3 :(得分:0)
#define VALUE_AT_ADDRESS(address,type) *((type*) (address))