I've defined an opaque structure and related APIs like this:
typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);
I am not able to define the structure in my c file. Gives redefinition error.
typedef struct foo {
int implementation;
}foo;
I am able to use foo in c file without typedef but I want the typedef (i.e. use it directly as foo*). Is there a way?
You already have the typedef
in your header, so include that and define struct foo
in the implementation without the typedef
.
foo.h
:
typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);
foo.c
:
#include <foo.h>
struct foo { int implementation; };
/* etc. */
来源:https://stackoverflow.com/questions/5299261/c-typedefed-opaque-pointer