19

我已经定义了一个不透明的结构和相关的 API,如下所示:

typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);

我无法在我的 c 文件中定义结构。给出重新定义错误。

typedef struct foo {
   int implementation;
}foo;

我可以在没有 typedef 的 c 文件中使用 foo,但我想要 typedef(即直接将其用作 foo*)。有办法吗?

4

1 回答 1

27

您的标头中已经有了typedef,所以struct foo在没有typedef.

foo.h

typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);

foo.c

#include <foo.h>

struct foo { int implementation; };
/* etc. */
于 2011-03-14T13:37:02.700 回答