Forum: Compiler & IDEs WINAVR20100110 Warnung "..-Wimplicit-fallthrough.."


von Egonwalter M. (heiner1234)


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

: Bearbeitet durch User
von Wilhelm M. (wimalopaan)


Lesenswert?

Einen 10 Jahre alten Compiler! ich würde es stattdessen mal mit einem 
avrgcc update probieren.

von Fern Schätzer (Gast)


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.

von Oliver S. (oliverso)


Lesenswert?

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

von Egonwalter M. (heiner1234)


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.

von Oliver S. (oliverso)


Lesenswert?

Nun ja, jeder darf nach seiner Facon unglücklich werden.

Oliver

von Hmmm (Gast)


Lesenswert?

Egonwalter M. schrieb:
> 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.

Alles lösbar:

Beitrag "Avr Studio 4 und die neue AVR Toolchain - So funktionierts!"

von Egonwalter M. (heiner1234)


Lesenswert?

Hallo Oliver S.

“Nun ja, jeder darf nach seiner Facon unglücklich werden”

So issues. Zum Glück.

@Hmmm

Den Artikel kenne ich, habe ich auch probiert - danach funktionierte das 
AVRStudio 4.18 nicht mehr korrekt und ich musste es neu installieren.

von Henrik H. (Firma: TU Chemnitz) (heha)


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.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Henrik H. schrieb:
> Für solche Fälle

Thread nicht gelesen?

Ich mein', der Thread ist schon so alt, dass du beim Absenden des 
Beitrags eine fette rote Warnmeldung bekommst – aber der im Thread 
diskutierte Compiler ist noch vieeeel älter. Dem hilft dein Attribut 
absolut gar nichts.

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.