<转> 求结构体偏移

简介: 原文出处忘记了。。。 此宏很神奇 #define FIND(structTest,e) (size_t)&(((structTest*)0)->e)   struct test { int a; int b; char c; int d; }; size_t s = FIND(te...

原文出处忘记了。。。

此宏很神奇

#define FIND(structTest,e) (size_t)&(((structTest*)0)->e)

 

struct test
{
int a;
int b;
char c;
int d;
};
size_t s = FIND(test,a);
cout<<s<<endl;  //输出结构体偏移

相关文章
|
10月前
|
编译器 Linux C语言
详解结构体内存对齐及结构体如何实现位段~
详解结构体内存对齐及结构体如何实现位段~
|
编译器 Linux C语言
什么是结构体和结构体的对齐规则
什么是结构体,为什么会用到结构体?C语言本身存在一些内置数据类型(比如int char float double 数组等),但这些不能满足我们的需要,我们创建了结构体来自定义自己需要的类型。
117 0
|
10月前
|
存储 安全 编译器
使用unsafe库操作结构体的属性偏移和指针转换
【5月更文挑战第19天】Go语言是类型安全的,但通过`unsafe`包,可以进行结构体属性偏移量计算和指针转换。`unsafe.Offsetof`获取结构体字段的偏移量,`unsafe.Pointer`允许不同类型指针间的转换。然而,这可能导致类型安全屏障被绕过,若使用不当,会引发安全问题或panic。应谨慎使用`unsafe`,因为它不遵循GO 1兼容性准则。
90 0
使用unsafe库操作结构体的属性偏移和指针转换
|
10月前
|
存储 编译器 C语言
结构体的内存对齐与位段
当我们描述一个人的年龄时我们可以使用,int age = 18;但是如果我们要描述一个人呢?很显然我们无法仅靠一个age就实现对一个人的描述,所以就有了结构体,在结构体中我们可以包含多种类型的数据,这样就可以实现对一个人的描述比如身高、爱好、体重等等
|
编译器 C++
自定义类型之结构体的基础和进阶(有关位段、结构体自引用、嵌套、内存对齐、修改对齐数、结构体的传参、和offsetof宏的使用)
一、结构体基础知识 二、结构体的进阶(有关结构体的自引用,嵌套,内存对齐和内存设计) (一、)首先是结构体的嵌套 (二、)结构体的自引用 (三、)结构体的内存对齐(如何计算结构体的所占内存大小) (四、)如何修改默认对齐数 三、offsetof的意思 四、结构体的传参 五、位段的使用和注意 总结:
初始结构体
初始结构体
73 0
|
编译器 程序员 Linux
关于c语言结构体偏移的一点思考(一)
关于c语言结构体偏移的一点思考(一)
143 0
|
C语言
关于c语言结构体偏移的一点思考(二)
关于c语言结构体偏移的一点思考(二)
92 0
|
程序员 编译器 Linux
关于c语言结构体偏移的一点思考(一)
关于c语言结构体偏移的一点思考(一)
149 0
|
编译器 Linux 程序员
关于c语言结构体偏移的一点思考
关于c语言结构体偏移的一点思考
167 0