0

如果我有一个结构,例如:

typedef struct bag {
  int test;
} *bag;

那么如果一个函数消耗了包。比方说:

int sample(bag *b) {
    b->test ...
}

我收到错误,我在不是结构或联合的东西中请求成员“b”。我该如何解决?我可以将 b 转换为 (struct bag *) 但这似乎不合理。

4

2 回答 2

4

您刚刚将 type 定义为指向typebag指针struct bag。因此,当您创建一个类型的变量时bag *b,您实际上是在创建一个类型的变量struct bag**。要么将您的参数更改为bag b,要么为您的成员 ( (*b)->test) 进行双重取消引用。

编辑 正如另一张海报提到的那样,您可能的意思是typedef struct bag { ... } bag,您的原始代码将被编译。

于 2012-09-15T06:05:00.453 回答
2

您必须决定:bag 是指向结构的指针的名称,或者 bag 是结构的名称:可能您的意思是

typedef struct bag {
   int test;
} bag;

然后你的代码编译。

于 2012-09-15T06:07:41.817 回答