Forum: Mikrocontroller und Digitale Elektronik Tricore + Tasking Compiler / Struct-Problem


von Simon F. (Gast)


Lesenswert?

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

von Marcus (Gast)


Lesenswert?

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.

von Andreas (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.