Forum: Mikrocontroller und Digitale Elektronik Keil "struct" Problem


von mimi m. (Firma: mumu) (ysp)


Lesenswert?

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!

von Karl H. (kbuchegg)


Lesenswert?

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.

von Keiler (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Keiler (Gast)


Lesenswert?

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. 
>:->

von mimi m. (Firma: mumu) (ysp)


Angehängte Dateien:

Lesenswert?

Hey,

also die angehängten Files machen mir Probleme ;)

Für Hilfe wäre ich dankbar!

von Keiler (Gast)


Lesenswert?

Bei mir läuft der Header problemlos durch, keine errors, keine warnings: 
Keil V7.0

???

von mimi m. (Firma: mumu) (ysp)


Lesenswert?

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?!

von Keiler (Gast)


Lesenswert?

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.

von mimi m. (Firma: mumu) (ysp)


Lesenswert?

Hm, also bei mir nicht. Könntest Du mir Dein Projekt schicken? Eventuell 
fehlt mir eine Einstellung(Linker)??

von Keiler (Gast)


Lesenswert?

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