【发布时间】:2016-01-31 00:13:25
【问题描述】:
我的结构如下:
struct A{
int a;
int b;
char c;
};
我想知道结构中成员的内存地址。我需要编写一个函数或宏才能得到以下结果。
myfun( A , c ) ---> (4 + 4 - 1) 7
myfun( A , b ) ---> (4 -1) 3
myfun( A , a ) ---> 0
还有人吗?
注意:应该只将结构名称和成员名称传递给函数 (myfun)。您不能创建变量并将其传递给函数。但是,您可以在函数内执行任何操作。
【问题讨论】:
-
@EliBendersky 能不能把函数/宏写出来,方便大家理解如何使用。
-
他谈到了 standard 宏:en.cppreference.com/w/cpp/types/offsetof
-
您希望您的宏将结构中所有先前的数字和字符相加吗?
-
是的,我必须使用 offsetof 。感谢@EliBendersky 指出。
-
@EliBendersky:回答部分:↓↓↓↓↓↓↓