【问题标题】:How to know the layout of a structure data in c如何知道c中结构数据的布局
【发布时间】: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:回答部分:↓↓↓↓↓↓↓

标签: c++ c memory struct


【解决方案1】:

这就是offsetof 宏的作用。它已经是 C++ 的一部分。

【讨论】:

  • “可能的实现”中是否有 UB? o.O
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多