简体   繁体   English

如何从其成员地址获取结构的起始地址

[英]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 ptr1obj1中成员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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM