Heim > Backend-Entwicklung > C++ > Kann gültiger Code in C und C beim Kompilieren unterschiedliche Ausgaben erzeugen?

Kann gültiger Code in C und C beim Kompilieren unterschiedliche Ausgaben erzeugen?

Susan Sarandon
Freigeben: 2024-11-09 01:37:02
Original
760 Leute haben es durchsucht

Can Valid Code in Both C and C   Produce Different Output When Compiled?

Kann Code, der sowohl in C als auch in C gültig ist, beim Kompilieren abweichendes Verhalten zeigen?

Trotz zahlreicher Ähnlichkeiten gibt es subtile Unterschiede zwischen C und C. Dies wirft die Frage auf: Kann in beiden Sprachen gültiger Code immer noch unterschiedliche Ergebnisse liefern, wenn er mit ihren jeweiligen Standard-Compilern kompiliert wird?

Voraussetzungen für einen fairen Vergleich

Um einen aussagekräftigen Vergleich zu gewährleisten Im Vergleich legen wir bestimmte Bedingungen fest:

  • Präprozessoranweisungen (z. B. #ifdef) sind ausgeschlossen.
  • Implementierungsdefinierte Aspekte sind in beiden Sprachen identisch.
  • Moderne Versionen der Standards werden verglichen (z. B. C90 oder höher und C 98).

Eine Verhaltensungleichheit

Bedenken Sie den folgenden Code Ausschnitt:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
Nach dem Login kopieren

In C führt dieser Code zu keiner Ausgabe, da ein temporäres f-Objekt erstellt und zerstört wird. In C90 wird jedoch „Hallo“ ausgegeben, da Funktionen ohne vorherige Deklaration aufgerufen werden können.

Diese Abweichung ergibt sich aus den unterschiedlichen Interpretationen von f() in C und C . In C wird f() als Funktionsaufruf behandelt, während es in C als Deklaration einer Struktur betrachtet wird.

Das obige ist der detaillierte Inhalt vonKann gültiger Code in C und C beim Kompilieren unterschiedliche Ausgaben erzeugen?. 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