error: stray '\xyz' in program
Hallo, ich bekomme beim übersetzen eines C++ Beispieles aus einem Buch eine riesenlange fehlermeldung und kann sie nicht einordnen/erklären. Es scheint an der eingebundenen include Datei <list> zu liegen, die hab ich mir aber angeschaut (/usr/include/g++/list) und da kann ich auch nichts besonderes feststellen. Die Fehlermeldung(en) fängt/fangen so an: In file included from pointer.cpp:2: list:1: error: stray '\177' in program list:1: error: stray '\1' in program list:1: error: stray '\1' in program list:1: error: stray '\1' in program In file included from pointer.cpp:2: list:1:8: Warnung: null character(s) ignored list:1: error: stray '\2' in program list:1:18: Warnung: null character(s) ignored list:1: error: stray '\3' in program list:1:20: Warnung: null character(s) ignored list:1: error: stray '\1' in program list:1:22: Warnung: null character(s) ignored list:1: error: parse error before `@' token list:1: error: stray '\211' in program list:1: error: stray '\4' in program list:1: error: stray '\10' in program [...] und enden so: list:231:2737: Warnung: null character(s) ignored list:231: error: parse error before `@' token list:231: error: parse error before `@' token list:231:2774: Warnung: null character(s) ignored list:231:2789: Warnung: null character(s) ignored list:231:2789: Warnung: no newline at end of file pointer.cpp:18: error: parse error before `}' token pointer.cpp: In function `int main(int, char**)': pointer.cpp:22: error: `Sprite' undeclared (first use this function) pointer.cpp:22: error: (Each undeclared identifier is reported only once for each function it appears in.) pointer.cpp:24: error: `list' undeclared (first use this function) pointer.cpp:24: error: `sprList' undeclared (first use this function) make: *** [pointer.o] Fehler 1 . Wenn ich den include rausnehme ist die Fehlerliste weg, ich kann aber keine liste erzeugen. pointer.cpp sieht so aus: -------- #include <iostream> #include <list> // Eine Struktur für eine // animierte Spielgrafik struct Sprite{ float x, y; float dx, dy; int frameCount; int animationCount; int **animation; int curAnimation; int curFrame; void *frames; }; int main(int, char**) { std::cout << sizeof(Sprite); list<Sprite> sprList; return 0; } ------- Benutzer gcc: 3.3.1 Meine frage ist die headerdatei kaputt? Woran könnte es liegen? Vielen dank für Hilfe schöne Gruße Gregor
Hallo, evtl. kann es sich um ein (unsichtbares) Steuerzeichen handeln, dass diesen parse error hervorruft. Probier mal, die Stelle an der der Fehler auftritt zu löschen und nochmal neu zu schreiben. Grüße, Alex
-----Original Message----- From: Gregor Schatz [mailto:gregor.schatz@placeofplay.de] Sent: Tuesday, January 04, 2005 10:38 PM To: SuSE Programming Subject: error: stray '\xyz' in program
Hallo,
ich bekomme beim übersetzen eines C++ Beispieles aus einem Buch eine riesenlange fehlermeldung und kann sie nicht einordnen/erklären. Es scheint an der eingebundenen include Datei <list> zu liegen, die hab ich mir aber angeschaut (/usr/include/g++/list) und da kann ich auch nichts besonderes feststellen.
Die Fehlermeldung(en) fängt/fangen so an: In file included from pointer.cpp:2: list:1: error: stray '\177' in program list:1: error: stray '\1' in program list:1: error: stray '\1' in program list:1: error: stray '\1' in program In file included from pointer.cpp:2: list:1:8: Warnung: null character(s) ignored list:1: error: stray '\2' in program list:1:18: Warnung: null character(s) ignored list:1: error: stray '\3' in program list:1:20: Warnung: null character(s) ignored list:1: error: stray '\1' in program list:1:22: Warnung: null character(s) ignored list:1: error: parse error before `@' token list:1: error: stray '\211' in program list:1: error: stray '\4' in program list:1: error: stray '\10' in program [...] und enden so: list:231:2737: Warnung: null character(s) ignored list:231: error: parse error before `@' token list:231: error: parse error before `@' token list:231:2774: Warnung: null character(s) ignored list:231:2789: Warnung: null character(s) ignored list:231:2789: Warnung: no newline at end of file pointer.cpp:18: error: parse error before `}' token pointer.cpp: In function `int main(int, char**)': pointer.cpp:22: error: `Sprite' undeclared (first use this function) pointer.cpp:22: error: (Each undeclared identifier is reported only once for each function it appears in.) pointer.cpp:24: error: `list' undeclared (first use this function) pointer.cpp:24: error: `sprList' undeclared (first use this function) make: *** [pointer.o] Fehler 1 . Wenn ich den include rausnehme ist die Fehlerliste weg, ich kann aber keine liste erzeugen. pointer.cpp sieht so aus: -------- #include <iostream> #include <list> // Eine Struktur für eine // animierte Spielgrafik struct Sprite{ float x, y; float dx, dy; int frameCount; int animationCount; int **animation; int curAnimation; int curFrame; void *frames; }; int main(int, char**) { std::cout << sizeof(Sprite); list<Sprite> sprList; return 0; } ------- Benutzer gcc: 3.3.1 Meine frage ist die headerdatei kaputt? Woran könnte es liegen?
Vielen dank für Hilfe
schöne Gruße
Gregor
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
Hallo Alex, Alnexander Muthler schrieb:
evtl. kann es sich um ein (unsichtbares) Steuerzeichen handeln, dass diesen parse error hervorruft. Probier mal, die Stelle an der der Fehler auftritt zu löschen und nochmal neu zu schreiben. in meinem Programm scheint es aber nicht zu liegen sondern in der (von mir unveränderten) includierten Headerdatei <list> bei mir schätze mal unter /usr/include/g++/list . Das mit neuschreiben im Programm hab ich probiert, fehler unverändert. Kann sich so ein Fehler in meine installierten Headerdateien eingeschlichen haben? die Installierte rpm-Paketversion von libstdc++-devel scheint jedenfalls unverändert zu sein...
In file included from pointer.cpp:2: list:1: error: stray '\177' in program list:1: error: stray '\1' in program
Im Pogramm in der Zeile 2 und das 2. Include ist/steht #include <list> . Da scheint auch das Problem drin/dran zu liegen. Gruß Gregor
Moin moin, Am Mittwoch, 5. Januar 2005 14:03 schrieb Gregor Schatz:
Alnexander Muthler schrieb:
evtl. kann es sich um ein (unsichtbares) Steuerzeichen handeln, dass diesen parse error hervorruft. Probier mal, die Stelle an der der Fehler auftritt zu löschen und nochmal neu zu schreiben. in meinem Programm scheint es aber nicht zu liegen sondern in der (von mir unveränderten) includierten Headerdatei <list> bei mir schätze mal unter /usr/include/g++/list . Das mit neuschreiben im Programm hab ich probiert, fehler unverändert. Kann sich so ein Fehler in meine installierten Headerdateien eingeschlichen haben?
Du kennst das ja mit den Bits?! 0,1 oder vielleicht... *SCNR*
die Installierte rpm-Paketversion von libstdc++-devel scheint jedenfalls unverändert zu sein...
Mit einer kleinen Änderung lässt sich dein Code bei mir kompilieren ... compiler: SuSE 9.0 gcc-Version 3.3.4 (pre 3.3.5 20040809) Gentoo gcc-Version 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6) -------------------- snip ---------------------------- int main(int, char**) { std::cout << sizeof(Sprite); list<Sprite> sprList; // std::list<Sprite> !!! return 0; } ------------ Vorher hatte ich diesen Fehler: test.cpp: In function `int main(int, char**)': test.cpp:24: error: `list' undeclared (first use this function) test.cpp:24: error: (Each undeclared identifier is reported only once for each function it appears in.) test.cpp:24: error: Fehler beim Parsen before `>' token distcc[5916] ERROR: compile test.cpp on localhost failed Greetings Andre
-------------------- snip ---------------------------- int main(int, char**) { std::cout << sizeof(Sprite); list<Sprite> sprList; // std::list<Sprite> !!! return 0; }
------------ Danke darauf hab ich noch nicht geachtet gehabt, das lag daran das das aus dem Buch übernommen war. Ist mir auch klar nicht immer so sauberer Stiel, und ein
Andre Heine schrieb: paar kleinere Fehler... die hätt ich auch grad gefunden, ich hab aber anscheinen Probleme mit den Installierten headern (SuSE 9.0 von CD) auch nach erneuter installation von libstdc++-devel. Danke für die korrektur . Gruß Gregor P.S. werde gebrauch von using std::cout; using std::list; machen
Gregor Schatz wrote:
ich bekomme beim übersetzen eines C++ Beispieles aus einem Buch eine riesenlange fehlermeldung und kann sie nicht einordnen/erklären. Es scheint an der eingebundenen include Datei <list> zu liegen, die hab ich mir aber angeschaut (/usr/include/g++/list) und da kann ich auch nichts besonderes feststellen.
schaut irgendwie komisch aus. Hast du das Programm selber getippt oder irgendwo kopiert? Davon abgesehen würde ich das Buch wegwerfen und durch was aktuelles ersetzen, denn es fehlt using std::list; using std::cout; Gruß, Bernhard
Hallo Bernhard, Bernhard Walle schrieb:
Gregor Schatz wrote:
schaut irgendwie komisch aus. Hast du das Programm selber getippt oder irgendwo kopiert? Ertappt, ist kopiert.
Davon abgesehen würde ich das Buch wegwerfen und durch was aktuelles ersetzen, denn es fehlt
using std::list; using std::cout;
Danke für die Stilistische Verbesserung, nehem ich gerne als Anregung, mir sind an sich die Konzepte aus dem Buch wichtiger als der verwendete Programmierstiel, nur möchte ich die Beispiele die dabei sind erst einmal ausprobieren. Gruß Gregor
* Gregor Schatz (gregor.schatz@placeofplay.de) [20050105 13:48]:
Es scheint an der eingebundenen include Datei <list> zu liegen, die hab ich mir aber angeschaut (/usr/include/g++/list) und da kann ich auch nichts besonderes feststellen.
Die Fehlermeldung(en) fängt/fangen so an:
Wie rufst du den Compiler auf?
In file included from pointer.cpp:2:
list:1: error: stray '\177' in program list:1: error: stray '\1' in program list:1: error: stray '\1' in program list:1: error: stray '\1' in program
/usr/include/g++/list scheint eindeutig defekt zu sein. Ich würde einfach das Paket libstdc++-devel noch einmal installieren, das müsste den Header mit einer korrekten Version überschreiben.
int main(int, char**) { std::cout << sizeof(Sprite); list<Sprite> sprList; ^^^^ Da muss ein std:: davor, sonst meckert der Compiler.
Philipp
--
Philipp Thomas
Philipp Thomas schrieb:
Wie rufst du den Compiler auf?
via make if g++ -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT pointer.o -MD -MP -MF ".deps/pointer.Tpo" \ -c -o pointer.o `test -f 'pointer.cpp' || echo './'`pointer.cpp; \ then mv -f ".deps/pointer.Tpo" ".deps/pointer.Po"; \ else rm -f ".deps/pointer.Tpo"; exit 1; \ fi Jetzt weiß ich auch selbst wo das Problem liegt. ;) g++ -DHAVE_CONFIG_H -I. -I. -I. und eine Datei im Verzeichnis die "list" heißt. Muss noch mehr über make, automake und autoconf lernen.
int main(int, char**) { std::cout << sizeof(Sprite); list<Sprite> sprList;
^^^^ Da muss ein std:: davor, sonst meckert der Compiler.
Stimmt das tut er. Besten dank für alle Hilfe und Anregungen Gruß Gregor
participants (5)
-
Alexander Muthler
-
Andre Heine
-
Bernhard Walle
-
Gregor Schatz
-
Philipp Thomas