Hallo, ich arbeite mit einem Tasking-Compiler 2.5 r2 für den Tricore. Ich bin gerade dabei an einer scheinbar einfachen struct-Deklarierung zu verzweifeln. [c] typedef struct { uint8_t a; uint8_t b; uint16_t c; } d_type ; [\c] d_type wird im späteren Programmablauf als Rückgabetyp einer Funktion und zur Definition zweier Strukturen des Typs d_type verwendet. Der Compiler bringt allerdings beim Build folgende Fehlermeldung: ctc E289: ["..\header.h" 22/3] "d_type" redeclared with a different type ctc I802: ["..\header.h" 22/3] previous declaration of "d_type" Die Position 22/3 ist dabei vor dem Wort "d_type" in der Zeile "} d_type ;" der Strukturdeklarierung. Kann mir bitte jemand erklären, was mit einer "redeclaration" gemeint ist bzw. wie eine solche in c-Code aussehen könnte? Sorry, falls die Frage evtl. einfach und offensichtlich ist. Vielen Dank bereits im Voraus. Beste Grüße, Simon
Also prinzipiell seh ich auf die schnelle nichts, was an dem struct auszusetzen wäre. Ich habs zur Sicherheit nochmal schnell bei mir in den GNU eingefügt und der nimmts so an. (bis auf uint8_t und uint16_t). Aber redeklaration deutet darauf hin, dass der Name deines Structs schon anderweitig verwendet wird.
Kurze Idee: Du bindest den Header mehrfach ein? Hast Du so eine Konstruktion im Header?
1 | #ifndef _HEADER_H_
|
2 | #define _HEADER_H_
|
3 | |
4 | // hier eigentlicher Header
|
5 | |
6 | #endif
|
MfG Andreas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.