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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.