如果我有这样的结构:
typedef struct bag {
int test;
} *bag;
如果一个函数消耗了bag。比如说:
int sample(bag *b) {
b->test ...
}
我得到的错误是,我请求成员“b”的内容不是结构或联盟。我该怎么解决?我可以把b投给a(struct bag*),但这似乎不合理。
最佳答案
您刚刚将类型bag
定义为指向类型struct bag
的指针。因此,当您生成bag *b
类型的变量时,实际上是在创建struct bag**
类型的变量。请将参数更改为bag b
,或对成员((*b)->test
)执行双重取消引用。
编辑
正如另一张海报所提到的,您可能是指typedef struct bag { ... } bag
,然后您的原始代码将被编译。
关于c - C中针对结构的typedef,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12434952/