GCC Warnungen

Gast #364872
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte bei folgendem Konstrukt eine Warnung vom Compiler erhalten:

typedef enum
{
    IDLE,
    ALARM,
} EVENT;

typedef struct
{
    EVENT event;
} test_struct;

test_struct Test;

Test.event = IDLE;   // das ist okay
Test.event = 1;      // hier soll es mind. eine Warnung geben

Ich habe mich schon durch die Dokumenation der Warnungskommandos für
den Compiler gearbeitet, aber nichts gefunden. Vielleicht, oder
hoffentlich, auch überlesen.

Weiß einer von Euch weiter?

Vielen Dank und Mahlzeit!
Gast #364874
Lesenswert?
• ▲
▼
Bei meiner Beispielzeile

Test.Event = 1;

generiert der Visual C++ Compiler von Microsoft einen Fehler und der
IAR Workbench Compiler für den M16C wenigstens eine Warnung, beides
nach dem Motto "Typ bei Zuweisung stimmt nicht".

Ich finde das bei komplexen Konstrukten (große State Machines etc) sehr
hilfreich.

So eine Typüberwachung muss doch auch beim GCC aktivierbar sein, oder?
Moderator Persönliche Seite #364875
Lesenswert?
• ▲
▼
Das geht bei C nicht, nur bei C++.  Bei C ist ein enum (per
definitionem) zuweisungskompatibel mit dem Typ "int".

Wenn du den GCC im C++-Modus betreibst, generiert er
ordnungsgemäß einen Fehler:

j@ida 635% avr-gcc -Wall -x c -c foo.c
j@ida 636% avr-gcc -Wall -x c++ -c foo.c
foo.c: In function `void foo()':
foo.c:17: error: invalid conversion from `int' to `EVENT'

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren