C++ 如何知道c语言中结构数据的布局

C++ 如何知道c语言中结构数据的布局,c++,c,memory,struct,C++,C,Memory,Struct,我的结构如下: 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)。不允许创建变量

我的结构如下:

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)。不允许创建变量并将其传递给函数。但是,您可以在函数中执行任何操作。

宏就是这样做的。它已经是C++的一部分。

这就是宏所做的。它已经是C++的一部分。

@ EliBendersky,你能写函数/宏吗?这样它对每个人都是有用的,了解如何使用它。他谈到了标准宏:你希望你的宏把结构中所有以前的数字和字符加起来吗?是的,我必须使用OffStof。谢谢@EliBendersky指出。@EliBendersky:回答部分:↓↓↓↓↓↓↓@EliBendersky你能写函数/宏吗?这样每个人都能了解如何使用它。他谈到了标准宏:你想让你的宏把结构中以前的所有数字和字符加在一起?是的,我必须使用offsetof。谢谢@EliBendersky指出。@EliBendersky:回答部分:↓↓↓↓↓↓↓“可能的实施”中是否存在UB?o、 OIs在“可能的实现”中有UB吗?o、 o