如何编写宏来从C中的内存访问数据?

时间:2012-05-28 09:54:00

标签: c macros memory-address c-preprocessor

上周我接受了采访。我被要求写一个宏来读取一个内存位置(比如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 个答案:

答案 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))