如果我有这样的结构:

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/

10-11 17:06