2010-12-12 15 views
1

構造体へのポインタがあれば、構造体のメンバにアクセスする#defineを書くことはできますか?構造体のメンバーにアクセスする#define?

struct s_block { 
size_t size; 
struct s_block *ptr; 
}; 

#define SIZER(ptr) // will access size member ???? 
+0

はい、なぜそうしたいですか?つまり、構造体の 'ptr'メンバーへのポインタがあれば、対応する' size'メンバにアクセスするためのマクロを書く方法がありますか? –

+0

いいえ、私は実際に私にptrに基づく結果を構造体に与えるマクロを必要とし、構造体のメンバーではありません。しかし、私はすでに答えを得ている。明確化のためにありがとう。 – newprint

答えて

3
#define SIZER(ptr) (ptr)->size 

あなたが仕事に、このためにs_blockへのポインタを渡す必要があり、そのかかわらずメモしています。

最後に、これはCプログラミング言語のすべてのリファレンスマニュアルに記載されています。私はあなたが1つを選ぶことをお勧めします。 K&Rは今日でもとても良いです。

+5

#define SIZER(p)(p) - > sizeは同等であることに注意したいと思います。私は似た名前の混乱がないことを確認したい。 – caveman

0
#define SIZER(ptr) (ptr)->size 
関連する問題