Ich habe einige Schwierigkeiten beim Kompilieren eines von mir geschriebenen C ++ - Programms.
Dieses Programm ist sehr einfach und entspricht nach meinem besten Wissen allen im C ++ Standard festgelegten Regeln. Ich habe die gesamte ISO / IEC 14882: 2003 zweimal durchgelesen, um sicherzugehen.
Das Programm ist wie folgt:
Hier ist die Ausgabe, die ich beim Versuch erhalten habe, 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
Bestürzt habe ich g ++ 4.5.2 ausprobiert, aber es war ebenso wenig 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 Kofferraum 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 gegeben:
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 der Erweiterung .cpp , daher dachte ich, ich müsste meine Datei möglicherweise umbenennen. Ich habe den Namen in helloworld.cpp geändert , aber das hat nicht geholfen. Ich denke, es gibt einen sehr schwerwiegenden Fehler in Clang, denn als ich versuchte, das umbenannte Programm damit zu kompilieren, flippte es aus und druckte "84 Warnungen und 20 generierte Fehler". und mein Computer piepste viel!
Was habe ich hier falsch gemacht? Habe ich einen kritischen Teil des C ++ - Standards verpasst? Oder sind alle drei Compiler wirklich so kaputt, dass sie dieses einfache Programm nicht kompilieren können?
quelle
Ursprünglich von Overv @ reddit .
quelle
Versuchen Sie Folgendes:
quelle
Ihr
<
und>
,(
und)
,{
und}
scheinen nicht sehr gut zusammen zu passen; Versuche sie besser zu zeichnen.quelle
}
Problem ist. Versuchen Sie, sich darauf zu konzentrieren, das mit dem{
Sie können das folgende Python-Skript ausprobieren. Beachten Sie, dass Sie PIL und Pytesser installieren müssen .
Um es zu verwenden, gehen Sie wie folgt vor:
quelle
Sie haben vergessen, Comic Sans als Schriftart zu verwenden, deshalb ist es fehlerhaft.
quelle
Nach dieser letzten Klammer kann ich keine neue Zeile mehr sehen.
Wie Sie wissen: "Wenn eine nicht leere Quelldatei nicht mit einem Zeilenumbruch endet, ... ist das Verhalten undefiniert."
quelle
Dieses Programm ist gültig - ich kann keine Fehler finden.
Ich vermute, Sie haben einen Virus auf Ihrem Computer. Am besten formatieren Sie Ihr Laufwerk neu und installieren das Betriebssystem neu.
Lassen Sie uns wissen, wie das funktioniert oder ob Sie Hilfe bei der Neuinstallation benötigen.
Ich hasse Viren.
quelle
Ich habe festgestellt, dass es hilfreich ist, meinen Code nicht mit einem magischen Marker auf das Glas meines Monitors zu schreiben, obwohl er gut aussieht, wenn er wirklich schwarz ist. Der Bildschirm füllt sich zu schnell und dann rufen mich die Leute, die mir einen sauberen Monitor geben, jede Woche an.
Ein paar meiner Angestellten (ich bin ein Manager) kommen herein, um mir einen dieser Red Pad-Computer mit den Knöpfen zu kaufen. Sie sagten, dass ich keine Marker brauche und den Bildschirm selbst reinigen kann, wenn er voll ist, aber ich muss vorsichtig sein, ihn zu schütteln. Ich nahm an, dass es so empfindlich ist.
Deshalb stelle ich die klugen Leute ein.
quelle
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. Siehe die spezifischen Dokumentationen für jeden Compiler, da diese Farben zwischen den Compilern variieren;)quelle
Sie haben den Vorprozessor vergessen. Versuche dies:
quelle
Haben Sie das Programm handgeschrieben und dann in den Computer gescannt? Das ist es, was "helloworld.png" impliziert. In diesem Fall müssen Sie sich darüber im Klaren sein, dass der C ++ - Standard (auch in seiner neuesten Ausgabe) keine optische Zeichenerkennung erfordert und leider in keinem aktuellen Compiler als optionale Funktion enthalten ist.
Möglicherweise möchten Sie die Grafiken in ein Textformat übertragen. Jeder Klartext-Editor kann verwendet werden. Die Verwendung eines Textverarbeitungsprogramms kann zwar einen hübschen Ausdruck erzeugen, führt jedoch höchstwahrscheinlich zu demselben Fehler, den Sie beim Scannen erhalten.
Wenn Sie wirklich abenteuerlustig sind, können Sie versuchen, Ihren Code in ein Textverarbeitungsprogramm zu schreiben. Drucken Sie es aus, vorzugsweise mit einer Schriftart wie OCR-A . Nehmen Sie dann Ihren Ausdruck und scannen Sie ihn wieder ein. Der Scan kann dann über ein OCR-Paket eines Drittanbieters ausgeführt werden, um ein Textformular zu generieren. Das Textformular kann dann unter Verwendung eines von vielen Standard-Compilern kompiliert werden.
Beachten Sie jedoch die hohen Papierkosten, die während der Debugging-Phase anfallen.
quelle
Zeichnen Sie das folgende Include, um es zu kompilieren:
Ich habe gehört, er kann Syntaxfehler kompilieren ...
quelle
#include <JonSkeet>
.Leider haben Sie drei Compiler ausgewählt, die alle mehrere Sprachen unterstützen, nicht nur C ++. Sie alle müssen die von Ihnen verwendete Programmiersprache erraten. Wie Sie wahrscheinlich bereits wissen, ist das PNG-Format für alle Programmiersprachen geeignet, nicht nur für C ++.
Normalerweise kann der Compiler die Sprache selbst herausfinden. Wenn das PNG beispielsweise offensichtlich mit Buntstiften gezeichnet ist, weiß der Compiler, dass es Visual Basic enthält. Wenn es so aussieht, als wäre es mit einem Druckbleistift gezeichnet, ist es leicht, den Ingenieur bei der Arbeit zu erkennen, der FORTRAN-Code schreibt.
Dieser zweite Schritt hilft dem Compiler auch in diesem Fall nicht. C und C ++ sehen einfach zu ähnlich aus, bis auf die
#include
. Daher müssen Sie dem Compiler bei der Entscheidung helfen, welche Sprache es wirklich ist. Jetzt können Sie nicht standardmäßige Mittel verwenden. Beispielsweise akzeptiert der Visual Studio-Compiler / TC und / TP Befehlszeilenargumente , oder Sie können die Option "Kompilieren als: C ++" in der Projektdatei verwenden. GCC und CLang haben ihre eigenen Mechanismen, die ich nicht kenne.Daher würde ich empfehlen, stattdessen die Standardmethode zu verwenden, um Ihrem Compiler mitzuteilen, dass der folgende Code in C ++ vorliegt. Wie Sie inzwischen festgestellt haben, sind C ++ - Compiler sehr wählerisch, was sie akzeptieren. Daher besteht die Standardmethode zur Identifizierung von C ++ darin, dass die Einschüchterungsprogrammierer ihren C ++ - Code ergänzen. In der folgenden Zeile wird Ihrem Compiler beispielsweise klargestellt, dass es sich um C ++ handelt (und er sollte es besser ohne Beschwerden kompilieren).
quelle
#pragma
der richtige Weg, um eine Nachricht an den Compiler zu bekommen?Probier diese:
quelle
endl
(L) nichtend1
(eins) sein. Aber +1 schön gemacht!Ist Ihr Compiler im Expertenmodus?! Wenn ja, sollte es nicht kompiliert werden. Moderne Compiler haben "Hello World!"
quelle
OCR sagt:
Was verdammt gut ist, um fair zu sein.
quelle
Natürlich sollten Sie Ihre Festplatte formatieren.
Wirklich, diese Fehler sind nicht so schwer zu lesen.
quelle
Ich habe Ihr Programm von PNG nach ASCII konvertiert, aber es wird noch nicht kompiliert. Zu Ihrer Information, ich habe es mit einer Zeilenbreite von 100 und 250 Zeichen versucht, aber beide liefern vergleichbare Ergebnisse.
quelle
Das erste Problem ist, dass Sie versuchen, am Ende der Hauptfunktion einen falschen Wert zurückzugeben. Der C ++ - Standard schreibt vor, dass der Rückgabetyp von main () int ist. Stattdessen versuchen Sie, die leere Menge zurückzugeben.
Das andere Problem ist - zumindest bei g ++ -, dass der Compiler die verwendete Sprache aus dem Dateisuffix ableitet. Aus g ++ (1):
Wenn Sie diese Probleme beheben, erhalten Sie eine voll funktionsfähige Hello World-Anwendung, wie aus der Demo hier hervorgeht .
quelle
Ihre Schrift ist scheiße, wie sollte ein Parser das jemals lesen können? Nehmen Sie an einem Kalligraphiekurs teil.
quelle
Ihre Compiler erwarten ASCII , aber dieses Programm wurde offensichtlich mit EBCDIC geschrieben .
quelle
Sie versuchen, ein Bild zu kompilieren.
Geben Sie Ihre Handschrift in ein Dokument namens main.cpp ein, führen Sie diese Datei über Ihren Compiler aus und führen Sie dann die Ausgabedatei aus.
quelle
Sie müssen die Genauigkeit Ihrer Ausgabe angeben, der unmittelbar vor der endgültigen schließenden Klammer ein Doppelpunkt vorangestellt ist . Da die Ausgabe nicht numerisch ist, ist die Genauigkeit Null.
: 0}
quelle
hinzufügen :
direkt nach dem Einschließen: P: D.
quelle
std
ganze Zeit. Erinnert mich daran, keinen zu bekommen.Scheint, dass Ihr Compiler keine Dateien in einer solchen hmm ... -Codierung unterstützt. Versuchen Sie es in ASCII zu konvertieren.
quelle
Das Problem liegt in der Syntaxdefinition. Versuchen Sie, Lineal und Kompass für eine klassischere Beschreibung zu verwenden!
Prost,
quelle
Versuchen Sie, die Eingangsschnittstelle zu wechseln. C ++ erwartet, dass eine Tastatur an Ihren Computer angeschlossen wird, kein Scanner. Hier kann es zu Konflikten mit Peripheriegeräten kommen. Ich habe in ISO Standard nicht überprüft, ob die Tastatureingabeschnittstelle obligatorisch ist, aber das gilt für alle Compiler, die ich jemals verwendet habe. Aber vielleicht ist die Scannereingabe jetzt in C99 verfügbar, und in diesem Fall sollte Ihr Programm tatsächlich funktionieren. Wenn nicht, müssen Sie auf die nächste Standardversion und das nächste Upgrade der Compiler warten.
quelle
Sie könnten verschiedene Farben für Klammern ausprobieren, vielleicht würde etwas Grün oder Rot helfen? Ich denke, Ihr Compiler kann schwarze Tinte nicht erkennen: P.
quelle
Bin ich der einzige, der das Zeichen zwischen 'return' und dem Semikolon nicht erkennen kann? Das könnte es sein!
quelle