c typedef(ed)opaque指针
我已经定义了一个不透明的结构和相关的API,如下所示:
typedef struct foo foo; foo *create_foo(...); delete_foo(foo *f);
我无法在我的c文件中定义结构。 给出重新定义错误。
typedef struct foo { int implementation; }foo;
我可以在没有typedef的c文件中使用foo,但我想要typedef(即直接使用它作为foo *)。 有办法吗?
你已经在头文件中有了typedef
,所以在没有typedef
的实现中包含它并定义struct foo
。
foo.h
:
typedef struct foo foo; foo *create_foo(...); delete_foo(foo *f);
foo.c
:
#include struct foo { int implementation; }; /* etc. */