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!
Bei: typedef enum { IDLE, ALARM, } EVENT; gibt nicht einmal der Keil eine Warnung aus... hat aber auch keine Probleme damit
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?
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'
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.