2016-09-16 67 views
0

我有一个指针& 2个不同的结构。第一个结构有一个void *指针的成员。现在我需要使用先前指向第一个结构的指针访问第二个结构的成员。我如何从2个结构指针访问元素?

struct a { 
    void *ptrxx; 
} 

struct b { 
    int info; 
} 

struct a *ptr; 

我需要做的是这样的:

ptr->ptrxx->info; 

但是我必须做某种类型转换到令C知道ptr->ptrxx是结构B A指针。我怎么能在一个表达式中做到这一点(不需要额外的指针)?

PS:我得到error: request for member ***** in something not a structure or union.(gcc)。

回答

2
((struct b *)(ptr->ptrxx))->info 

可能不需要所有这些parens,但它有助于显示发生的顺序。以struct a(它是void *)的ptrxx成员,将其转换为指向struct b的指针,然后取info成员。