如果我有一个结构,例如:
typedef struct bag {
int test;
} *bag;
那么如果一个函数消耗了包。比方说:
int sample(bag *b) {
b->test ...
}
我收到错误,我在不是结构或联合的东西中请求成员“b”。我该如何解决?我可以将 b 转换为 (struct bag *) 但这似乎不合理。
您刚刚将 type 定义为指向typebag
的指针struct bag
。因此,当您创建一个类型的变量时bag *b
,您实际上是在创建一个类型的变量struct bag**
。要么将您的参数更改为bag b
,要么为您的成员 ( (*b)->test
) 进行双重取消引用。
编辑
正如另一张海报提到的那样,您可能的意思是typedef struct bag { ... } bag
,您的原始代码将被编译。
您必须决定:bag 是指向结构的指针的名称,或者 bag 是结构的名称:可能您的意思是
typedef struct bag {
int test;
} bag;
然后你的代码编译。