Fehlermeldung: warning: no newline at end of file
-
Bill Gates schrieb:
also soll ich for dem return der main ein leerzeichen setzen...
Nein, wie der Fehler sagt am Ende der Datei. Also wenn in der letzten Zeile etwas steht einfach ein Enter dahinter damit dadrunter eine leere Zeile ist.
-
wieso ist das eigentlich notwendig, warum wird das vom compiler verlangt?!
-
chmbw schrieb:
wieso ist das eigentlich notwendig, warum wird das vom compiler verlangt?!
Weil früher manche Compielen die letze Zeile nicht gesehen haben, wenn die nicht mit einem Zeilenumbruch abgeschlossen waren.
-
chmbw schrieb:
wieso ist das eigentlich notwendig, warum wird das vom compiler verlangt?!
Eigentlich: Weil die meisten Quelltext-Editoren doof sind und sich nicht an den C++-Standard halten. Der schreibt nunmal vor dass eine Quelldatei eine Aneinanderreihung von durch Newline abgeschlossenen Datensätzen variabler Länge (sprich: Zeilen) ist. Gute Editoren berücksichtigen das und schließen auch eine nicht-leere letzte Zeile mit einem Newline ab. Microsoft hat im Visual Studio, statt den Editor zu fixen, die Warnung abgeschaltet (wenn Microsoft-Spracherweiterungen aktiviert sind).
-
LordJaxom schrieb:
chmbw schrieb:
wieso ist das eigentlich notwendig, warum wird das vom compiler verlangt?!
Eigentlich: Weil die meisten Quelltext-Editoren doof sind und sich nicht an den C++-Standard halten. Der schreibt nunmal vor dass eine Quelldatei eine Aneinanderreihung von durch Newline abgeschlossenen Datensätzen variabler Länge (sprich: Zeilen) ist. Gute Editoren berücksichtigen das und schließen auch eine nicht-leere letzte Zeile mit einem Newline ab. Microsoft hat im Visual Studio, statt den Editor zu fixen, die Warnung abgeschaltet (wenn Microsoft-Spracherweiterungen aktiviert sind).
Das habe ich auch noch nicht gewußt. Danke für den Hinweis
-
LordJaxom schrieb:
Eigentlich: Weil die meisten Quelltext-Editoren doof sind und sich nicht an den C++-Standard halten.
Muss sich denn ein Quelltext-Editor an den C++-Standard halten?
-
µngbd schrieb:
LordJaxom schrieb:
Eigentlich: Weil die meisten Quelltext-Editoren doof sind und sich nicht an den C++-Standard halten.
Muss sich denn ein Quelltext-Editor an den C++-Standard halten?
fricky
-
volkard schrieb:
chmbw schrieb:
wieso ist das eigentlich notwendig, warum wird das vom compiler verlangt?!
Weil früher manche Compielen die letze Zeile nicht gesehen haben, wenn die nicht mit einem Zeilenumbruch abgeschlossen waren.
So ein Quatsch.
Das liegt doch eher daran, dass ein Newline nützlich ist, wenn man zum Beispiel durch #include Files zusammenwurstet.
-
earli-is-registered-now schrieb:
volkard schrieb:
chmbw schrieb:
wieso ist das eigentlich notwendig, warum wird das vom compiler verlangt?!
Weil früher manche Compielen die letze Zeile nicht gesehen haben, wenn die nicht mit einem Zeilenumbruch abgeschlossen waren.
So ein Quatsch.
Das liegt doch eher daran, dass ein Newline nützlich ist, wenn man zum Beispiel durch #include Files zusammenwurstet.
Ich habe mit solchen Compilern gearbeitet.
-
volkard schrieb:
Ich habe mit solchen Compilern gearbeitet.
Klar, gibts Schrottprogramme. Aber das ist ja nicht der Grund, warum der Standard das will oder der GCC meckert.
-
LordJaxom schrieb:
Eigentlich: Weil die meisten Quelltext-Editoren doof sind und sich nicht an den C++-Standard halten. Der schreibt nunmal vor dass eine Quelldatei eine Aneinanderreihung von durch Newline abgeschlossenen Datensätzen variabler Länge (sprich: Zeilen) ist. Gute Editoren berücksichtigen das und schließen auch eine nicht-leere letzte Zeile mit einem Newline ab. Microsoft hat im Visual Studio, statt den Editor zu fixen, die Warnung abgeschaltet (wenn Microsoft-Spracherweiterungen aktiviert sind).
Das hat schon seine historischen, auch bei C einsetzenden Gründe, wenn man Win/iX anguckt. Die neue Zeile wird bei win mit CRLF codiert, bei iX genügt LF.
Die letzte Zeile könnte ja auch einen Include enthalten, der dann einfach "rangeklebt" würde oder auch einfach nichts, dann wartet ein Compiler, der unbedingt einen Zeilenabschluß braucht, um sie auszuparsen, auf selbigen bis zum jüngsten Gericht. Daher die Warnung, daß der Compiler meint, daß Du u.U. was anderes compilieren willst, als der Compiler sieht.
Wie auch immer, das Dings ist nur eine Warning und ob eine Leerzeile drankleben hilft, ist auch nicht sicher.
Ich hatte schon so Fälle, wo dann zwar das Compilieren funktionierte, der Debugger aber wg. des fehlenden CR in der letzten Zeile auf die Nase fiel.
Am Besten, man rewritet die Source einmal mit einem Editor, dessen Verhalten in der Hinsicht einstellbar ist (sowas wie Edit Plus o.Ä.) und gut ist.