Wie zu erklären, extern typedef struct?
Ich habe zwei c-Dateien foo.c mit der Funktionalität und test_foo.c testen Sie die Funktionen von foo.c.
Gibt es eine Möglichkeit, den Zugriff auf die struct typedef BAR
ich in " foo " definiert.c in test_foo.c-ohne Verwendung einer header-Datei? Bisher war ich in der Lage zu vermeiden, eine h-Datei, so dass das ganze Programm würde aus foo.c. Danke.
foo.c
typedef struct BAR_{...} bar;
BAR *bar_new(...) {..}
test_foo.c
extern BAR *bar_new(...)
error: expected declaration specifiers or ‘...’ before ‘BAR’
InformationsquelleAutor Framester | 2010-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort ist, dass es einer ist, und Sie sollten eine header-Datei statt.
Sie können kopieren Sie die definition des struct
typedef struct BAR_{...} bar;
intest_foo.c
und es wird funktionieren. Aber dies führt zu Doppelarbeit.Jede Lösung, die funktioniert, muss die Implementierung der Struktur zur Verfügung, um den compiler in den
test_foo.c
.Sie können auch ein ADT, wenn diese zu Ihnen passt in diesem Fall.
Jetzt hab ich nur kopiert die definition in die andere c-Datei.
Ich mache das gleiche - ich bin die Entwicklung einer Testumgebung, die soll wrap-around-Produktion code. In der production code die Struktur-definition hat kein Geschäft der öffentlichen und begraben werden sollte. Daher hatte ich zum kopieren der definition in meiner Testumgebung. Diese Vervielfältigung ist aber mein linker ist intelligent genug, um mir Warnungen, wenn man ändert aber nicht die anderen.
InformationsquelleAutor Shiroko
Drop der Typdefinition.
In foo.c:
In test_foo.c:
Beachten Sie, dass Sie nur die Existenz einer struct bar-Objekt auf diese Weise, der Benutzer in test_foo.c weiß nichts über den Inhalt des Objekts.
InformationsquelleAutor harald
Würden Sie brauchen, um liefern die definition von BAR in test_foo.c. Ob diese Vervielfältigung ist vorzuziehen, dass ein header ist bis zu Ihnen.
InformationsquelleAutor Brian Hooper