C typedef (ed) непрозрачный указатель
Я определил непрозрачную структуру и связанные с ней API:
typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);
Я не могу определить структуру в моем файле c. Дает ошибку переопределения.
typedef struct foo {
int implementation;
}foo;
Я могу использовать foo в c файле без typedef, но я хочу typedef (т.е. использовать его напрямую как foo *). Есть ли способ?
Ответы
Ответ 1
У вас уже есть 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. */