Ich habe in eine Codebasis von Drittanbietern gegraben und festgestellt, dass es anscheinend gültig ist, einen Typ als Zeiger auf eine undefinierte Struktur zu deklarieren. Als Mindestarbeits Beispiel eine C-Datei test.c
enthält nichts betrachten, aber:Warum ist es zulässig, einen Typ als Zeiger auf eine undefinierte Struktur in C zu definieren?
typedef struct foo *bar;
Was mich wundert ist, dass diese Datei ohne Probleme kompiliert die mit dem Befehl
gcc test.c -shared
Warum Compiler nicht beschweren über die Struktur foo nicht irgendwo erklärt werden?
Meine Umgebung ist Ubuntu 16.04 mit gcc (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.5) 5.4.0 20160609.
Es ist nicht "undefined struct", es ist ein Zeiger auf unvollständigen Typ. –