一个问题,如何自动导出结构体的偏移

发布于 2022-09-18 05:05:07 字数 359 浏览 9 评论 0

有没有方法自动分析出一个结构体每一项的偏移量呢?
例如
struct xx
{
    int a;
    int b;
}xx;
可以自动分析出a : 0, b: 4呢?
更复杂的情况包括:
struct yy
{
   int a;
   int b;
#ifdef DEFC
   int c;
#endif
   int d;
} yy;
能够正确判断d是偏移8还是12?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

帅的被狗咬 2022-09-25 05:05:07

如果是gcc,那么你可以使用 __builtin_offsetof 来计算偏移。

如果不是gcc,那么你可以写一个小程序来计算。

struct xx
{
    int a;
    int b;
}xx;

那么 &xx.a - &xx 就是 a 的偏移。 &xx.b - &xx 就是 b 的偏移。

最近可好 2022-09-25 05:05:07

linux内核代码中还有一个办法:

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

长不大的小祸害 2022-09-25 05:05:07

其实我是想说,编译器(暂设定为gcc)的debug信息中应该包含这些信息,能否写一个程序提取出这些信息(不是自己用offset算)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文