Heim > Backend-Entwicklung > C++ > Warum erzeugt meine nicht ungültige C-Funktion, die keinen Wert zurückgibt, keinen Compilerfehler?

Warum erzeugt meine nicht ungültige C-Funktion, die keinen Wert zurückgibt, keinen Compilerfehler?

Susan Sarandon
Freigeben: 2024-12-16 08:27:14
Original
959 Leute haben es durchsucht

Why Doesn't My Non-Void C   Function Returning No Value Produce a Compiler Error?

Nicht-Void-Funktion gibt keinen Wert im C-Code zurück

Frage:

Dieser C-Code unten hat einen Nicht-void-Funktion, die keinen Wert zurückgibt:

static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
    tvec3::Min(a,b,out);
    out.w = min(a.w,b.w);
}
Nach dem Login kopieren

Warum wird es ohne kompiliert? Fehler?

Antwort:

Dieses Verhalten ist gemäß dem C 11-Standardentwurf Abschnitt 6.6.3 Absatz 2 undefiniert, der besagt, dass das Ende eines Werts abfließt -returning-Funktion führt zu undefiniertem Verhalten.

Compiler-Warnungen und Fehler:

  • gcc und clang: Kann mit dem Flag -Wall eine Warnung generieren (Warnung: Steuerung erreicht Ende der nicht leeren Funktion [-Wreturn-type] ). Dies kann mithilfe des Flags -Werror=return-type in einen Fehler umgewandelt werden.
  • Visual Studio: Erzeugt standardmäßig den Fehler C4716 („Min“: muss einen Wert zurückgeben) oder eine Warnung C4715, wenn nicht alle Codepfade a zurückgeben Wert.

Auswirkungen:

Undefiniertes Verhalten kann zu unvorhersehbaren Ergebnissen führen, einschließlich Programmabstürzen. Es wird empfohlen, Compiler-Optionen wie -Wall und -Wextra zu verwenden, um Fälle von undefiniertem Verhalten zu erkennen und zu beheben.

Das obige ist der detaillierte Inhalt vonWarum erzeugt meine nicht ungültige C-Funktion, die keinen Wert zurückgibt, keinen Compilerfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage