return + unreachable -> wieso?

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
erikh
Beiträge: 7
Registriert: 19.05.2003, 21:19
Wohnort: Freiberg-> Sachsen-> Germany

return + unreachable -> wieso?

Beitrag von erikh »

Hallo jungs!

hab ein kleines problem. mein Compiler gibt mir bei folgendem code einen fehler aus:

Code: Alles auswählen

if(element != 0)
{
        ///...
}
else
{
     return;
}
pagestxtinfo = count/16; // zeile 1022
der fehler:

Code: Alles auswählen

Programm\display.c(1022): warning:  #111-D: statement is unreachable
ich versteh aber nicht wieso? das return scheint hier ungeachtet des else blocks in dem es sich befindet die funktion zu verlassen. also immer! egal ob die bedingung true oder false ist. an dem auskommentierten block liegts übrigens nicht;) schon gecheckt

Kann mir jemand helfen?

Gruß, Erik
joggel

Re: return + unreachable -> wieso?

Beitrag von joggel »

Normaler Weise ist es ja "nur" eine Warnung.
Hast du "Warnungen als Fehler behandeln" beim Compiler eingestellt?

Warum sich der Code jetzt so verhält, kann ich an dem Code-Ausschnitt auch nicht sagen
Zuletzt geändert von joggel am 21.08.2011, 23:30, insgesamt 1-mal geändert.
Youka
Beiträge: 28
Registriert: 20.04.2011, 18:24
Wohnort: Darmstadt

Re: return + unreachable -> wieso?

Beitrag von Youka »

Es ist ja kein Fehler, sondern nur eine Warnung, also kompilierbar.
Die Warnung sagt nur aus, dass falls der else block eintritt, nachfolgende Werte sinnlos sind (Annahme "worst-case").
erikh
Beiträge: 7
Registriert: 19.05.2003, 21:19
Wohnort: Freiberg-> Sachsen-> Germany

Re: return + unreachable -> wieso?

Beitrag von erikh »

wäre ne möglichkeit, aber so ganz glaub ich da noch nicht dran. Hab noch nie für so nen konstrukt ne warnung gesehen. sch*** compiler... na ja, werds dann morgen mal an der hardware testen. bleibt mir wohl nix anderes übrig als zu hoffen.

danke trotzdem. Gruß, erik
Youka
Beiträge: 28
Registriert: 20.04.2011, 18:24
Wohnort: Darmstadt

Re: return + unreachable -> wieso?

Beitrag von Youka »

Also ich hatte den Fall schon öfters und es ist wirklich so, dass der Compiler vom schlimmsten Fall ausgeht und deswegen die Warnung ausgibt. Sind bei dir Warnungen als Fehler eingestellt, so schalt es bei den Compiler-Optionen aus. Ebenso kannst du dort ein geringeres Warning-Level einstellen, damit weniger dumme Warnungen auftauchen.
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: return + unreachable -> wieso?

Beitrag von BeRsErKeR »

Ich glaube hier wäre auch mal der Code vor dem if interessant. Vielleicht kann element ja nur 0 sein?! Die Warnung würde ich schon so verstehen, dass der Code nach dem if _nie_ aufgerufen wird und das könnte wirklich auf einen anderen Fehler im Code hinweisen. Wie gesagt wäre der restliche Code vor dem if eventuell ganz aufschlussreich.

Und Warnungen sollte man nicht einfach so ausschalten. Sie haben eigentlich immer einen Grund. In der Regel sollte man versuchen alle Warnungen zu beseitigen, bis auf wenige Ausnahmen, bei denen man sich sicher ist was man tut.
Ohne Input kein Output.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: return + unreachable -> wieso?

Beitrag von Schrompf »

Ich würde auch mal auf den Code vorher schauen. Am Ende hat der Compiler nur was erkannt, was Du noch nicht bemerkt hast. Nämlich, dass die Variable in der if-Bedingung nie was anderes als 0 sein kann.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
TGGC
Establishment
Beiträge: 569
Registriert: 15.05.2009, 18:14
Benutzertext: Ich _bin_ es.
Alter Benutzername: TGGC
Echter Name: Ich _bin_ es.
Wohnort: Mainz
Kontaktdaten:

Re: return + unreachable -> wieso?

Beitrag von TGGC »

Ich glaube, du irrst dich mit 99% Wahrscheinlichkeit und der Compiler hat recht.
Antworten