Hallo,
ich hätte einen Code, den ich gerne von GCC nach Keil überführen würde.
Leider habe ich hier ein Problem mit folgendem Teil:
typedef struct _MADCTR_Data_t {
union
{
Int8U MemDataAccCtrl;
struct
{
Int8U : 3;
Int8U RGB : 1;
Int8U ML : 1;
Int8U MV : 1;
Int8U MX : 1;
Int8U MY : 1;
}; // Zeile 184
}; // Zeile 185
} MADCTR_Data_t, *pMADCTR_Data_t;
FEHLER: ..\abc.h(184): warning: #40-D: expected an identifier
..\abc.h(185): warning: #40-D: expected an identifier
Kann mir jemand helfen??
Vielen Dank!
mimi momo schrieb: > FEHLER: ..\abc.h(184): warning: #40-D: expected an identifier > ..\abc.h(185): warning: #40-D: expected an identifier > > Kann mir jemand helfen?? Gib der struct einen Namen. Gib der union einen Namen. anonyme Strukturen gehen nur dann, wenn man im gleichen Aufwasch auch eine Variable damit erzeugt.
Karl Heinz Buchegger schrieb: > Gib der struct einen Namen. Gib der union einen Namen. > anonyme Strukturen gehen nur dann, wenn man im gleichen Aufwasch auch > eine Variable damit erzeugt. Stimmt so nicht. Der Keil (V7.0) frisst das obige Fragment problemlos, no errors, no warnings. Zeige den ganzen Header, der Bock liegt an anderer Stelle.
Die obigen anonymen structs und unions sind nicht im C Standard. Auch GCC meckert, wenn man ihn auf Standard trimmt (-std=c99). Möglicherweise muss man dem Keil die nötige Flexibilität mitteilen.
A. K. schrieb: > Möglicherweise > muss man dem Keil die nötige Flexibilität mitteilen. Die 08/15 Standard-Installation von Keil übersetzt den Kram oben ohne Kommentar. Ob das jetzt c99 oder d88 konform ist, hat mit der Ausgangfrage nichts zu tun. Also her mit dem ganzen Header. Dann suchen wir den Fehler und machen es anschleißend hübsch und so richtig c99. >:->
Hey, also die angehängten Files machen mir Probleme ;) Für Hilfe wäre ich dankbar!
Bei mir läuft der Header problemlos durch, keine errors, keine warnings: Keil V7.0 ???
Ich habe Keil uVision 4.23. Ich denke hier liegt das grosse Problem? Das Teil ist eben von IAR. Dort wird auch unter anderen das File intrinsics.h (#include "intrinsics.h") rein geholt. Die Files sind nur für IAR?!
Noch einmal, der Header wird übersetzt, keine Kommentare vom Compiler. Ich nutze auch µVision4 (4.0) mit dem Compiler 7.0 Die "includes.h" habe ich auch nicht. Die fehlenden Typen werden ersetzt:
1 | typedef unsigned long Int32U; |
2 | typedef Int32U* pInt32U; |
3 | typedef unsigned char Int8U; |
4 | typedef Int8U* pInt8U; |
5 | typedef char Boolean; |
Ich kann es nicht nachvollziehen.
Hm, also bei mir nicht. Könntest Du mir Dein Projekt schicken? Eventuell fehlt mir eine Einstellung(Linker)??
mimi momo schrieb: > Eventuell > fehlt mir eine Einstellung(Linker)?? Soweit kommst Du doch gar nicht, Deine warning entsteht beim compilieren. Ich habe nur einen Dummy aus Header und C-Modul. Wenn Du nur die warnings hast, läuft das Programm trotzdem.
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.