【发布时间】:2013-12-23 23:06:19
【问题描述】:
假设我有以下类型:
typedef struct TYPEA
{
int type;
char[12] id;
} TYPEA;
typedef struct TYPEB
{
int type;
int value;
} TYPEB;
我想使用创建这些类型和“int”的联合,这样我就可以访问“类型”int,而无需知道联合中存储的是 TYPEA 还是 TYPEB(int 的值让我确定哪个实际上存储在那里)。虽然我无法获得正确的语法。
我的工会:
typedef union MEMBER
{
int type;
struct TYPEA a;
struct TYPEB b;
} MEMBER;
通过以下方式访问联合:
typedef struct WRAPPER
{
union MEMBER* member;
struct WRAPPER* next;
} WRAPPER;
问题:
- (使用 'w' 作为指向已分配 WRAPPER 结构的指针)使用
w->member->a.id访问会给出“对成员 'id' 的请求,而不是结构或联合。 - 我可以将一个指向已经 malloc 的 TYPEA/B 的指针直接分配给 w-> 成员吗?还是需要特别分配联合?
谢谢。
【问题讨论】:
-
w->member仍然是一个指针。你不能在上面使用.运算符。 -
member 是一个指针,那么为什么你认为你可以在没有指针取消引用 (->) 的情况下访问类型?
-
缺少一些
;,所以出现了。 -
抱歉,问题 1 的意思是:w->member->a.id,而不是 w->member->type。我假设这是因为联合不是指针。我已经编辑了问题。