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?

110voto

bl00dshooter Punkte 981

Sie haben vergessen, Comic Sans als Schriftart zu verwenden, deshalb ist der Fehler aufgetreten.

73 Stimmen

Leider ist dies die einzige Schriftart, die meine Hand unterstützt. Es wäre sehr traurig, wenn ich deshalb nicht in C++ programmieren könnte. Glauben Sie, dass Java diese Schriftart unterstützen würde?

8 Stimmen

Sie werden Comic Sans sowieso brauchen, wenn Sie Comics zeichnen wollen, also sollten Sie ernsthaft in Erwägung ziehen, die Hände zu aktualisieren.

8 Stimmen

C++ erfordert eine einjährige Ausbildung in Kalligraphie. Wenn Sie keine Zeit haben, versuchen Sie es mit Visual Basic oder einfach mit binärem Maschinencode (Sie müssen dann nur die 0 und 1 richtig schreiben).

75voto

Michael Burr Punkte 320591

Ich kann keinen Zeilenumbruch nach der letzten Klammer erkennen.

Wie Sie wissen: "Wenn eine Quelldatei, die nicht leer ist, nicht mit einem Zeilenumbruch endet, ... ist das Verhalten undefiniert".

16 Stimmen

Hmmm. Zum Glück wurde diese lächerliche Regel in C++0x entfernt. Abgesehen davon, wie kann man eine solche Datei mit einem Zeilenumbruch abschließen? Ich dachte, ich hätte am Ende des Textes genügend Platz gelassen (wenn Sie die Quelldatei markieren, sollten Sie den zusätzlichen Platz sehen, den ich gelassen habe). Trotzdem danke für den Tipp!

8 Stimmen

Wenn Sie nicht genug Leerraum haben, kann ich versuchen, es auf meinem System zu kompilieren. Ich habe vier Monitore, also könnte ich versuchen, von meinem linken Monitor aus zu kompilieren.

74voto

Jerry Asher Punkte 796

Dieses Programm ist gültig - ich kann keine Fehler finden.

Ich vermute, dass Sie einen Virus auf Ihrem Rechner haben. Am besten wäre es, wenn Sie Ihr Laufwerk neu formatieren und das Betriebssystem neu installieren.

Lassen Sie uns wissen, wie das funktioniert, oder wenn Sie Hilfe bei der Neuinstallation benötigen.

Ich hasse Viren.

17 Stimmen

Ja, versuchen Sie, Linux zu installieren. Ich mache Windows für Ihr Problem verantwortlich.

62voto

the Tin Man Punkte 154584

Ich habe festgestellt, dass es hilft, meinen Code nicht mit einem Filzstift auf das Glas meines Monitors zu schreiben, auch wenn es schön aussieht, wenn es wirklich schwarz ist. Der Bildschirm füllt sich zu schnell und dann beschimpfen mich die Leute, die mir einen sauberen Monitor schenken, jede Woche.

Ein paar meiner Angestellten (ich bin ein Manager) wollen mir einen dieser roten Pad-Computer mit den Knöpfen kaufen. Sie sagten, dass ich keine Marker brauche und den Bildschirm selbst reinigen kann, wenn er voll ist, aber ich muss vorsichtig sein, wenn ich ihn schüttle. Ich nehme an, dass er auf diese Weise empfindlich ist.

Deshalb stelle ich die klugen Leute ein.

2 Stimmen

Ein Wacom Cintiq ist für einen Manager viel besser geeignet. Es ist teuer und gibt einem das Gefühl, wirklich wichtig zu sein. Alle Grafikdesigner in Ihrem Unternehmen haben einen viel niedrigeren Status und sollten daher EGA-Monitore verwenden. Hausmeister sollten CGA-Monitore verwenden. Programmierer sollten gebrauchte Monochrom-Terminals verwenden.

7 Stimmen

Ich hatte lange Zeit einen "Life Like"-Monitor. Er war so realistisch, dass man schwören könnte, der Bildschirmschoner mit den schwimmenden Fischen sei echt, und der kleine Taucher sah aus, als würde er schwimmen. Ich habe mir immer wieder den Arm nass gemacht, als ich versuchte, die Schatztruhe vom Boden zu holen, so echt war das. Das einzige Problem war, dass der Bildschirmschoner immer eingeschaltet war und die realistischen Blubbergeräusche kaum zu hören waren. Oh, und sie sagten, ich müsse zur Wartung täglich etwas oben auf den Monitor streuen, sonst würde der Bildschirmschoner nicht mehr funktionieren. Das hat er einmal gemacht, und der Geruch zwei Tage später war wirklich realistisch.

59voto

helloworld922 Punkte 10543

File format not recognized Sie müssen Ihre Datei richtig formatieren. Das bedeutet, dass Sie die richtigen Farben und Schriftarten für Ihren Code verwenden müssen. Sehen Sie sich die spezifischen Dokumentationen für jeden Compiler an, da diese Farben je nach Compiler variieren ;)

14 Stimmen

Oh, das macht irgendwie Sinn... Ich habe eine Schachtel mit 96 Buntstiften, also bin ich sicher, dass ich die richtige Vordergrundfarbe habe. Ich werde morgen farbiges Bastelpapier besorgen und es auf einem andersfarbigen Papier ausprobieren.

3 Stimmen

Um auf Nummer sicher zu gehen, solltest du dir auch ein paar Buntstifte und Ölfarben besorgen. Es ist allgemein bekannt, dass C++ eine sehr schwierig zu formatierende Sprache ist.

0 Stimmen

Ja, und vergessen Sie nicht, den Markierungsstift zu benutzen.

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