我有一个指针& 2种不同的结构。第一个结构的成员是void *指针。现在我需要使用前一个指向第一个结构的指针来访问第二个结构的成员。
struct a {
void *ptrxx;
}
struct b {
int info;
}
struct a *ptr;
我需要做类似的事情:
ptr->ptrxx->info;
但是我必须做某种类型转换让C知道ptr->ptrxx
是指向struct b的指针。我怎么能在一个表达式中做到这一点(不需要额外的指针)?
PS:我得到error: request for member ***** in something not a structure or union.
(gcc)。
答案 0 :(得分:2)
((struct b *)(ptr->ptrxx))->info
可能不需要所有那些parens,但它有助于显示发生的事情的顺序。选取ptrxx
成员struct a
(void *
),将其转换为指向struct b
的指针,然后选择info
成员。< / p>