[英]how to get struct's start address from its member's address
In C language, how to get struct's start address from its member's address? 在C语言中,如何从其成员地址获取struct的起始地址?
struct type1 {
//...
int member1;
//...
};
struct type1 obj1;
And ptr1
is the address of member member1
in obj1
, how to define 而
ptr1
是obj1
中成员member1
的地址,如何定义
macro #define start_add(ptr1, type1, member1)
to get obj1's 宏
#define start_add(ptr1, type1, member1)
获取obj1
start address? 起始地址?
您可以使用offsetof
做到这一点:
#define start_add(ptr1, type1, member1) ((type1 *)((char *)(ptr1) - offsetof(type1, member1)))
this from windows wdk 这是从Windows wdk
/*
#define CONTAINING_RECORD(address, type, field) ((type *)( \
(PCHAR)(address) - \
(ULONG_PTR)(&((type *)0)->field)))
*/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.