2010-12-12 84 views
1

給定一個指向結構的指針,我可以寫一個#define來訪問結構的成員嗎?#define會訪問該結構的成員?

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

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

是的,但你爲什麼要這麼做?或者你的意思是:給出一個指向結構體'ptr'成員的指針,有沒有辦法編寫一個宏來訪問相應的'size'成員? – 2010-12-12 03:54:22

+0

不,我實際上想要宏,它會給我基於ptr結果的結果,而不是結構的成員。但是,我已經得到了答案。感謝您的澄清。 – newprint 2010-12-12 04:14:47

回答

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

確實注意到,雖然你必須在一個指針傳遞給s_block這個工作。

最後,這應該在任何涉及C編程語言的參考手冊中。我建議你選一個。 K&R非常好,即使在今天。

+5

我只是想說明#define SIZER(p)(p) - > size是等價的。我想確保不會出現類似名稱的混淆。 – caveman 2010-12-12 03:39:10

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