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 が true であるため、&& も問題ありません...)

于 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 に答える