当前位置:  开发笔记 > 编程语言 > 正文

C/C++结构偏移量

如何解决《C/C++结构偏移量》经验,为你挑选了2个好方法。

我正在寻找一段代码,可以告诉我结构中字段的偏移而不分配结构的实例.

IE:给定

struct mstct {
    int myfield;
    int myfield2;
};

我可以写:

mstct thing;
printf("offset %lu\n", (unsigned long)(&thing.myfield2 - &thing));

获得offset 4输出.如果没有mstct thing声明/分配一个怎么办呢?

我知道&并不总是指向结构的第一个字段的第一个字节,我可以在以后解释.



1> Michael Burr..:

标准的offsetof()宏怎么样(在stddef.h中)?

编辑:对于因某些原因可能没有offsetof()宏的人,您可以使用以下内容获得效果:

#define OFFSETOF(type, field)    ((unsigned long) &(((type *) 0)->field))


哇 - 没有stddef.h?出于好奇,我可以问你在用什么吗?

2> Dan Lenski..:

是的,使用offsetof宏(至少使用GNU CC)可用于C和C++代码:

offsetof(struct mstct, myfield2)

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有