Forum: Mikrocontroller und Digitale Elektronik Problem mit Struct-Array


von Christian V. (Gast)


Lesenswert?

Hallo,

ich möchte gerne ein Array mit Structs erstellen und komme an dem Punkt 
nicht weiter.

______________________________________

types.h:

struct data_type
{
  volatile unsigned char x,
                         y,
                         z[SIZE];
};
______________________________________

test.h:

extern struct data_type test1;         // funktioniert

extern struct data_type test2[6];      // funktioniert nicht!!!
______________________________________

Fehlermeldung: error: array type has incomplete element type

Ich würde mich sehr freuen, wenn mir jemand erklären kann wie ich das 
Problem beheben kann.
Allerding dürfen keine größeren Umbauten vorgenommen werden. test1 muss 
genau so erhalten bleiben.

Gruß Christian
von tom (Gast)


Lesenswert?

Verwendung von typedef könnte helfen..
von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

... und keine Dimension angeben. Das weiß der Linker / Compiler.
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das Problem lässt sich durch die Reihenfolge der #include-Anweisungen 
steuern. "types.h" muss vor "test.h" eingebunden werden.
von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Das Problem lässt sich durch die Reihenfolge der #include-Anweisungen
> steuern. "types.h" muss vor "test.h" eingebunden werden.

Besser wäre noch, types.h in test.h einzubinden.
von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Beide funktionieren nicht weil sie undefiniert sind.

Wie gesagt, es sind nur Referenzen auf Daten die an anderer Stelle
definiert wurden. Deshalb muß auch die "Dimensionierung" bei test2
schlicht weg.

Das gehört in die Definition.

Es sollte heißen:
1
extern struct data_type test2[];
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.