19 Stimmen

C typedef(ed) undurchsichtiger Zeiger

Ich habe eine undurchsichtige Struktur definiert und verwandte APIs wie folgt:

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

Ich kann die Struktur nicht in meiner c-Datei definieren. Gibt eine Redefinitionsfehler.

typedef struct foo {
   int implementation;
}foo;

Ich kann foo in der c-Datei ohne typedef verwenden, aber ich möchte das typedef (d.h. direkt als foo*) verwenden. Gibt es eine Möglichkeit?

27voto

Fred Foo Punkte 341230

Du hast bereits das typedef in deinem Header, also inkludiere das und definiere struct foo in der Implementierung ohne das typedef.

foo.h:

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

foo.c:

#include 

struct foo { int implementation; };
/* etc. */

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X