error: array type has incomplete element type

Gast #1481336
Hallo,

ich versuche gerade in b.c auf das in a.c definierte
1
struct mystruct array[] = {...}

zuzugreifen (mystruct in a.h)

Ohne Weiteres gibt das einen error (
1
'array' undeclared here
).

Daher also in b.h die Deklaration
1
extern struct mystruct array[]

aber:
1
error: array type has incomplete element type

Das ist wohl nicht mehr gültig, aber alles, was ich probiert habe, führt 
zu nix.
Gast
Das sollte über die Header sichergestellt sein; wenn ich eine Kopie von 
struct mystruct in b.h kopiere gibt es
1
b.h error: redefinition of 'struct mystruct'
Gast
> Dann hast du es aber nicht vor der Array-Deklaration inkludiert.
Verstehe dich nicht ganz.
mystruct wird in a.h deklariert.
a.h wird vor b.h eingebunden (in main.h).

Die exakte Größe (Anzahl der structs mystruct) bringt leider nichts.

mystruct enthält mystruct2, das vor mystruct in a.h deklariert wird.
Könnte das ein Problem darstellen?
Gast schrieb:
>> Dann hast du es aber nicht vor der Array-Deklaration inkludiert.
> Verstehe dich nicht ganz.
> mystruct wird in a.h deklariert.
> a.h wird vor b.h eingebunden (in main.h).

Aha, und was wird wie in b.c eingebunden?

> mystruct enthält mystruct2, das vor mystruct in a.h deklariert wird.
> Könnte das ein Problem darstellen?

Vielleicht solltest du mal dazu übergehen, richtigen Code zu posten, 
statt unvollständiger Beschreibungen.
Du inkludierst doch b.h vor den Strukturdefinitionen. Du hast bei den 
gegenseitigen Includes (die übrigens ziemlich unsinnig sind) den 
Überblick verloren, was eigentlich genau passiert.

In a.h steht ein include main.h vor den Strukturdefinitionen. In main.h 
steht ein include a.h und b.h. In a.h sind wir ja aber gerade, also wird 
wegen des Include-Guards a.h hier nicht inkludiert (würde ja sonst auch 
eine Endlosschleife geben), sondern nur b.h. Also wird hier b.h vor den 
Strukturdefinitionen eingefügt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.