c++ - C/C++ 结构偏移

标签 c++ c oop

我正在寻找一段代码,它可以告诉我结构中字段的偏移量,而无需分配结构的实例。

IE:给定

struct mstct {
    int myfield;
    int myfield2;
};

我会写:

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

得到 offset 4为输出。没有那个我怎么办 mstct thing声明/分配一个?

我知道 &<struct>并不总是指向结构的第一个字段的第一个字节,我可以稍后解释。

最佳答案

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

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

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

关于c++ - C/C++ 结构偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/142016/

相关文章:

c++ - 如何在 Visual Studio 2012 中查看断言失败的 C++ 堆栈跟踪?

c++ - 如何在不在命令行 g++ 中运行 .so 文件的情况下使用它

c++ - C++/MFC 应用程序内存不足错误

c - 如何在 c 中使用 fprintf 进行文件对齐?

c - 为什么不能指定函数形参的存储类?

没有 void_t 的 C++ 检测习惯用法

程序的组成部分工作,当放在一起时不起作用

java - 如何将构造函数参数传递给另一个对象?

c# - 强制子类在计算后初始化父属性

Ruby 嵌套模块作为命名空间