我有一个结构,大致如下:
typedef struct first_struct {
const char *name; /**name */
second_struct_t *priv; /**private data */
} first_struct_t;
我只需使用
即可访问
priv
first_struct_t first;
printf("priv at %p\n", first->priv);
second_struct
大致定义如下
typedef struct second_struct second_struct_t;
struct second_struct {
uint8_t base;
internal_type *target_member;
};
现在我想了解如何访问
target_member
。不幸的是,first->priv->target_member
不起作用,因为我无法正确包含必要的标头,因为类型已转发。
我想过使用
addressof
,识别 target_member
的偏移量,但没有运气。
当然,一旦我有权访问
target_member
,我想访问其成员并打印值。
关于如何解决这个问题有什么建议吗?
struct second_struct {
uint8_t base;
internal_type *target_member;
};
typedef struct second_struct second_struct_t;
typedef struct first_struct {
const char *name; /**name */
second_struct_t *priv; /**private data */
} first_struct_t;
void foo(void) {
first_struct_t first; // note this is not a pointer
first_struct_t *pf = &first; // this is pointer
second_struct_t second; // just a buffer on the stack
first.priv = &second; // pointer should point somewhere
printf("priv at %p\n", first.priv);
printf("target_member at %p\n", first.priv->target_member);
printf("priv at %p\n", pf->priv);
printf("target_member at %p\n", pf->priv->target_member);
}