今天阅读代码发现有这么个东西,查了google,看了一些文章,自己动手试验了一下,对此有了些了解,记录一下
#define FIELD_OFFSET(type, field) ((ULONG)&(((type *)0)->field))这个宏是用来取结构体或类里面成员的偏移地址。
例如:
class CTest
{
public:
int a;
int b;
};
int offset = FIELD_OFFSET(CTest,b);
这个时候我们可以顺便看一下内存对齐的问题,我们把类改一下
class CTest
{
public:
char c;
int a;
int b;
};int offset = FIELD_OFFSET(CTest,b);结果不是5,是8
理解C++结构体成员偏移地址计算原理
本文深入探讨了C++中使用#define FIELD_OFFSET宏获取结构体成员偏移地址的过程,通过实例展示了内存对齐的影响,并解释了宏的具体实现逻辑。
984

被折叠的 条评论
为什么被折叠?



