467 Stimmen

Warum wird dieses Programm von drei C++-Compilern fälschlicherweise abgelehnt?

Ich habe Schwierigkeiten beim Kompilieren eines C++-Programms, das ich geschrieben habe.

Dieses Programm ist sehr einfach und entspricht, soweit ich weiß, allen Regeln des C++-Standards. Ich habe die gesamte ISO/IEC 14882:2003 zweimal durchgelesen, um sicherzugehen.

Das Programm sieht folgendermaßen aus:

enter image description here

Hier ist die Ausgabe, die ich erhielt, als ich versuchte, dieses Programm mit Visual C++ 2010 zu kompilieren:

c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172

Enttäuscht versuchte ich es mit g++ 4.5.2, aber auch das war nicht hilfreich:

c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status

Ich dachte mir, dass Clang (Version 3.0 trunk 127530) funktionieren muss, da es für seine Standardkonformität so hoch gelobt wird. Leider hat es mir nicht einmal eine seiner hübschen, hervorgehobenen Fehlermeldungen angezeigt:

c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)

Um ehrlich zu sein, weiß ich nicht wirklich, was diese Fehlermeldungen bedeuten.

Viele andere C++-Programme haben Quelldateien mit einer .cpp Erweiterung, also dachte ich, dass ich meine Datei vielleicht umbenennen müsste. Ich änderte ihren Namen in helloworld.cpp aber das hat nicht geholfen. Ich glaube, es gibt einen sehr schwerwiegenden Fehler in Clang, denn als ich versuchte, das umbenannte Programm damit zu kompilieren, flippte es aus, gab "84 Warnungen und 20 Fehler generiert" aus und ließ meinen Computer viel piepen!

Was habe ich hier falsch gemacht? Habe ich einen kritischen Teil des C++-Standards übersehen? Oder sind alle drei Compiler wirklich so kaputt, dass sie dieses einfache Programm nicht kompilieren können?

5voto

lothar Punkte 1

Du könntest verschiedene Farben für die Klammern ausprobieren, vielleicht würde etwas Grün oder Rot helfen? Ich glaube, dein Compiler kann schwarze Tinte nicht erkennen :P

5voto

quarkonium Punkte 128

Das Problem liegt in der Definition der Syntax, versuchen Sie es mit Lineal und Zirkel für eine klassischere Beschreibung!

Zum Wohl,

5voto

Kirill V. Lyadvinsky Punkte 92957

Es scheint, dass Ihr Compiler keine Dateien in dieser hmm... Kodierung unterstützt. Versuchen Sie, sie in ASCII zu konvertieren.

5voto

techolic Punkte 349

Bin ich der Einzige, der das Zeichen zwischen "Return" und dem Semikolon nicht erkennt? Das könnte es sein!

4 Stimmen

Es ist ein Großbuchstabe O mit einer speziellen Zeile, die wir "Durchmesser" nennen und die dem Compiler mitteilt, dass er den Mittelpunkt-Kreis-Algorithmus verwenden soll. Ich denke, Sie sollten Ihre Augen überprüfen lassen.

5voto

Spyros Punkte 44082

Hinzufügen:

using namespace std;

direkt nach der Aufnahme :P:D

5 Stimmen

Ich bevorzuge das Abtippen von std Die ganze Zeit über. Erinnert mich daran, mir keinen zuzulegen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X