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 に答える