Warnkontrolle erreicht das Ende der Nicht-Void-Funktion

Warnkontrolle erreicht das Ende der Nicht-Void-Funktion
Wenn wir die Programme in C schreiben++. Nach dem Ausführen von Programmen erhalten wir manchmal den Fehler: "WARNUNG: Die Kontrolle erreicht das Ende der Nicht-Void-Funktion", was bedeutet, dass bestimmte Funktionen, die einige Werte zurückgeben müssten, die Kündigung erreichen. Es könnte später keinen Wert geben. Zu diesem Zeitpunkt ist es gut, einen Blick darauf zu werfen, ob jeder Kontrollfluss einen Rückgabewert enthält oder nicht. Um diesen Fehler zu erkennen, müssen wir zunächst die Arbeit des Compilers erkennen.

Es gibt zwei Arten von Ungenauigkeiten, die beim Ausführen eines Programms auftreten.

Kompilierungszeitfehler: Fehler, der mit Hilfe der Verwendung des Compilers ohne Ausführung des Codes erkannt werden kann. Normalerweise sind dies Syntaxfehler, die ohne Ausführung des Codes erkannt werden.

Laufzeitfehler: Fehler, der vorkommt, während die Programmsyntax genau ist; Es gibt jedoch ein wenig Probleme, während der Code ausgeführt wird. Normalerweise fallen ungültige Reminiszenzzugriff auf unbegrenzte Schleifen unter die Laufzeitfehler.

Dieser Artikel wird über gemeinsame Probleme sprechen, die von Anfängern und zusätzlich qualifizierten Programmierern konfrontiert werden. Wir führen häufig in die Vorsicht aus, die Vorsicht hervorgeht: "Die Kontrolle erreicht das Ende der Nicht-Void-Funktion". Normalerweise vernachlässigen wir diesen Fehler aufgrund der maximalen Zeit, da das Programm dennoch dasselbe ausführt, selbst wenn diese Vorsicht auftritt.

Holen Sie sich die Warnmeldung:

Das Kompilieren dieses Codes wird ausgeführt, aber ein Fehler tritt auf, der die Warnung "Steuerung erreicht das Ende der Nicht-Void-Funktion". Jede Funktion enthält einen Rückgabetyp, der die Art von Wert zeigt, die die Funktion möglicherweise zurücksetzt. Wenn die Methode keinen Wert zurückgibt, ist sie weit entfernt von einem Leerlauf -Rückgabetyp. Wir erhalten den obigen Fehler, während die Nicht-Void-Funktion den Wert nicht zurückgibt.

#enthalten
Verwenden von Namespace STD;
int f ()
if (falsch)
Rückkehr 0;

int main ()
F();
Rückkehr 0;

In diesem Fall integrieren wir zunächst die Header -Datei und verwenden den Namespace -Standard. Darüber hinaus wenden wir die IF -Erklärung an. Manchmal kann es die Situation sein, in der wir zahlreiche If-Else haben, wenn Aussagen und alle Aussagen den Rückgabewert enthalten. Wenn es jedoch keine andere Behauptung gibt, können wir dennoch den Fehler bekommen, da der Compiler nicht verstehen konnte, dass jede Situation abgedeckt ist.

Hier erhalten wir nichts in der Ausgabe, so dass der Code erfolgreich ausgeführt wird, aber die Funktion gibt keinen Wert zurück.

Verwenden Sie wenn Anweisung:

In diesem Fall, wenn die Bedingung normalerweise nicht wahr ist und folglich die Funktion 'f' verhindern wird, dass es einen Wert zurückgibt. Und es ist der Grund für die Empfangs der Aufmerksamkeitsnachricht. Die Kontrolle innerhalb der Aufmerksamkeitsnachricht zeigt den Fluss dieses Code. Lassen Sie uns nun überprüfen, ob es sich um einen Laufzeitfehler oder einen Kompilierungs-Zeit-Fehler handelt. Die Warnung, die wir hier erhalten.

#enthalten
Verwenden von Namespace STD;
int f (int a)
wenn ein < 8)
Rückkehr 0;

int main ()
f (3);
Rückkehr 0;

Wir sind immer sicher, dass, wenn wir den Code ausführen, den 0 -Wert zurückgibt. Trotzdem können wir dieselbe Warnung erhalten, da der Compiler nicht klug genug arbeitet, um zur Kompilierungszeit zu erkennen, dass dieser Code nach Ausführung des Wertes jedes Mal zurückgegeben wird. Der Compiler überprüft lediglich die Syntax des Codes und übersetzt, dass für die Funktion 'F', wenn die definierte Bedingung nicht zutrifft, der Fluss dieses Codes Zeile acht erreicht und den Wert nicht zurückgeben kann, und daher wir nicht zurückgeben, und daher wir den Fehler erhalten.

Nach dem Kompilieren des Programms erhalten wir in der Ausgabe nichts, da der Fehler "Steuerung das Ende der Nicht-Void-Funktion erreicht".

Verwenden Sie die Rückgabeanweisungen:

Wenn die bedingten Aussagen keine Rückgabeberechnungen enthalten dürfen, erreicht die Steuerung auf andere Weise am Ende einer Nicht-Void-Funktion. Wenn die Implementierung innerhalb der Nicht-Void-Methode getrennt ist und Anweisungen nicht jeden Pfad ausführen konnten, müssen wir am Ende explizit "Return" für die Funktion aufrufen.

Die nachfolgende Instanz validiert die Funktion der Stringhandhabung mit bedingten Pfaden. Hier schließen wir drei Bibliotheken für verschiedene Zwecke ein, und danach deklarieren wir eine Funktion. Andererseits bleiben einige Instanzen jetzt nicht mehr auf den definierten Zustand bewertet, was bedeutet.

Hier haben wir die Funktion 'ReverSeScring' definiert. Wir übergeben die Zeichenfolge und den Zustand als Parameter an diese Funktion. Die Funktionsbehörde enthält keine Return -Anweisung. Es enthält jedoch keine Argumente, um die Funktion aufzurufen. Der Compiler zeigt also nur die Warnmeldung an. Wenn wir die Funktion aufrufen, erhalten wir den Fehler nicht.

Abschluss:

In diesem Artikel erhalten wir Informationen über den Fehler: "Steuerung erreicht das Ende der Nicht-Void-Funktion" und sehen, wie wir diesen Fehler erhalten. Die Nicht-Void-Methode enthält den Rückgabetyp. Somit möchte die Methode eine Erklärung haben, die die Elemente des resultierenden Typs zurückgibt. Wenn eindeutige Compiler-Standards akzeptiert werden, kann dieser Fehler vollständig unterdrückt werden, was zu Laufzeitfehlern führt, wenn die angegebene Methode im Code aufgerufen wird.