WINAVR20100110 Warnung "..-Wimplicit-fallthrough.."

OP #6690563
Lesenswert?

Hallo!

Ich verwende noch den WINAVR20100110 (avrgcc 4.3.3) und das AVRStudio 
4.18 (seeehr alt, ich weiß) und auch die Arduino IDE 1.8.10.

Wenn ich ein file in der Arduino IDE kompiliere, erhalte ich eine 
Warnung, wenn z.B in einer switch-Anweisung ein "break" fehlt (".. 
-Wimplicit-fallthrough .."); diese Warnung gibt's aber anscheinend nicht 
beim avrgcc 4.3.3 - gibt es da etwas ähnliches?

NB - ich habe auch das internet diesbezüglich durchforstet - ohne 
Ergebnis
Gast #6690587
Lesenswert?

Egonwalter M. schrieb:
> diese Warnung gibt's aber anscheinend nicht
> beim avrgcc 4.3.3

Ich behaupte mal dass du nur einen entsprechenden Warning-Level
einstellen musst um auch hier eine Warning zu bekommen. Denn
unter genau gleichen Bedingungen wirst du nicht compiliert haben.

Wilhelm M. schrieb:
> Einen 10 Jahre alten Compiler!

Daran scheitert es sicherlich nicht, bei solch trivialen Fehlern.
OP #6691117
Lesenswert?

Hallo Oliver S.

Vielen Dank für Deine Hilfe:
Oliver S. schrieb:
> 
https://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Warning-Options.html#Warning-Options
>
> Danach kennt der Compiler -Wswitch etc.
>
> Vielleicht hilft das ja.
>
> Oliver

Hat leider nichts geholfen, der Schalter -Wswitch warnt nicht bei einem 
fehlenden "break", geht wohl nur bei neueren Compilern - manchmal ist es 
ja gewollt, dass mehrere case-Fälle nicht durch "break" unterbrochen 
werden:
case(1).....
case(2).....
case(3).....
break;
case(4).....

diese Warnung kann man bei neueren Compilern auch verhindern.

@ Fern Schätzer
"Ich behaupte mal dass du nur einen entsprechenden Warning-Level
einstellen musst um auch hier eine Warning zu bekommen."

Genau aus diesem Grund habe ich hier gefragt.

Ich muss wohl damit leben, dass der avrgcc 4.3.3 nicht dieses Warn-Level 
beinhaltet.
Updaten - wäre 'ne Möglichkeit, wenn sichergestellt ist, dass DANACH 
mein AVRSTudio 4.18 genauso wie vor dem Update funktioniert - und da 
habe ich meine Zweifel.

Ich habe hier/im internet einige Beiträge über AVRGCC - Updates gelesen 
und das hat nicht dazu beigetragen, dass ich updaten möchte.
(Firma: TU Chemnitz) #7313985
Lesenswert?

Für solche Fälle gibt es das Attribut

1
    [[fallthrough]];

welches man an Stelle eines absichtlich weggelassen

1
    break;

hinschreibt. Benötigt etwas neueren C/C++-Compiler (IMHO mindestens avr-gcc 5.xx) im C++11-Modus. Sehr praktisch aber leider noch zu wenig bekannt.

Nur für den gängigen Fall von mehreren leeren Cases wird [‍[fallthrough]] (wie bisher) nicht benötigt:

1
    case 3: //[[fallthrough]];
2
    case 4: tueIrgendwas(); break;
3
    case 5: return magicObject.tuwas();

Hinter break und return ist [‍[fallthrough]] logischerweise Quatsch und illegal. Die gängigen Syntax-Highlighter können mit derartigen Doppel-Eckige-Klammer-Attributen (davon gibt's noch mehr) noch nichts anfangen.

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