amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > g++ und CStrings [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

16.06.2003, 15:38 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Ich hab mal folgende Frage.
Ich habe mal ein Konsolen Spiel geschrieben das mit Strings arbeitet.
Unter Linux kann ich das ohne Fehler oder Warnungen kompilieren. Wenn ich das mit dem g++ unter AmigaOS versuchen kommen ca.40 -50 Fehlermeldungen. Alle diese Fehler beziehen sich auf die von mir verwendeten String Variablen.
Nicht mal ein simples Programm (wie z.B. das hier)

#include <iostream.h>
#include <string.h>
using namespace std;

void main()
{
string hallo = "HALLO WELT";

cout << hallo << endl;
}

das Strings verwendet lässt sich compilieren.

Gibts da einen Trick ?
Oder ist der Header string.h nur so aus Spass
beim GNU/g++ dabei ?

[ - Antworten - Zitieren - Direktlink - ]

17.06.2003, 10:45 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von Kaesebroetchen:
Wenn ich das mit dem g++ unter AmigaOS versuchen kommen ca.40 -50 Fehlermeldungen. Alle diese Fehler beziehen sich auf die von mir verwendeten String Variablen.


Wenn Du die Fehler hier zitiert hättest, würde das die Sache deutlich vereinfachen. Aber ich glaube, ich kann Dir auch so helfen:

#1: Includes mit ".h" sind C-Includes, keine C++-Includes. Was Du da einbindest, ist der C-Header (der mit strcpy, strcmp etc.)!

#2: Es heißt int main(), nicht void main().

#3: "using namespace std;" ist schlechter Stil.

#4: "Formaljuristisch" bzw. standardkonform brauchst Du neben <iostream> (definiert cout) auch noch <ostream> (definiert operator<<); allerdings nagelt g++ Dich nicht darauf fest.

Probier's mal mit:

Zitat:
#include <iostream>
#include <string>

int main()
{
std::string hallo = "Hallo Welt!"; // kein Grund zu schreien... ;-)
std::cout << hallo << std::endl;
return 0;
}


[ - Antworten - Zitieren - Direktlink - ]

17.06.2003, 18:10 Uhr

Kronos
Posts: 1168
Nutzer
Also normalerweise ist iostream immer C++, egal ob mit ".h" oder nicht.

Ich denke eher das er den Compiler falsch aufruft, also "gcc" wo es
eigentlich "g++" heissen müsste.

MfG
Kronos
--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

18.06.2003, 05:45 Uhr

Solar
Posts: 3680
Nutzer
Bei iostream.h gibt es keinen namespace std, bei iostream (ohne .h) schon.

In jedem Fall ist string.h verkehrt, und höchstwahrscheinlich der Grund für Käsebrötchens Probleme.

Einmal nachschauen, ob tatsächlich g++ aufgerufen wird, kann allerdings auch nicht schaden. ;-)

[ - Antworten - Zitieren - Direktlink - ]

18.06.2003, 12:52 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Also erstmal Danke für die Tips.
Ich habe immer den g++ Aufgerufen.
Ich vermute mal dass das Installer-Script was bei dem Compiler dabei war, das ganze irgenwie nicht richtig installiert hat.
Einige Standard-Header wie CSTRING oder FSTREAM kennt der g++ gar nicht.
Und eigentlich müsste der Amiga-G++ doch alles was der Linus-G++ fehlerfrei compiliert, genauso fehlerfrei compilieren (So lange es keine Betriebssystemspezifischen Sachen sind) oder ?
Vielleicht sollte ich das ganze komplett neu installieren (Wie bei der Windows-Problemlösung FORMAT C: )

[ - Antworten - Zitieren - Direktlink - ]

18.06.2003, 13:22 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Kaesebroetchen:
Ich habe immer den g++ Aufgerufen.

g++ braucht man nur strenggenommem nur zum Linken. Das Frontend (gcc) erkennt am Suffix welcher Compiler angeworfen werden muß.
Zitat:
Ich vermute mal dass das Installer-Script was bei dem Compiler dabei war, das ganze irgenwie nicht richtig installiert hat.
Welchen GCC hast Du denn installiert? Zum Installerskript kann ich nichts sagen, da ich sowas nicht verwende.
Zitat:
Einige Standard-Header wie CSTRING oder FSTREAM kennt der g++ gar nicht.
Es gibt Legacy-headers die eben nicht mehr unbedingt vorhanden sind.
Zitat:
Und eigentlich müsste der Amiga-G++ doch alles was der Linus-G++ fehlerfrei compiliert, genauso fehlerfrei compilieren (So lange es keine Betriebssystemspezifischen Sachen sind) oder ?
Was ist "Linus-G++"?
Zitat:
Vielleicht sollte ich das ganze komplett neu installieren (Wie bei der Windows-Problemlösung FORMAT C: )
Vieleicht solltest Du mal genauere Informationen nennen? Welcher GCC, was für Fehlermeldungen (genauer Wortlaut!)

[ - Antworten - Zitieren - Direktlink - ]

18.06.2003, 14:03 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von Kaesebroetchen:
Einige Standard-Header wie CSTRING oder FSTREAM kennt der g++ gar nicht.


Drücke Dich mal etwas klarer aus. Groß-/Kleinschrift, mit oder ohne .h, und was verstehst Du unter "kennt er nicht" (Fehlermeldung)?

Zitat:
Und eigentlich müsste der Amiga-G++ doch alles was der Linus-G++ fehlerfrei compiliert, genauso fehlerfrei compilieren (So lange es keine Betriebssystemspezifischen Sachen sind) oder ?

Welche gcc-Version unter Linux, welche gcc-Version unter AmigaOS?

Wenn Du willst, das Dir geholfen wird (haben obige Tipps geholfen?), dann versuche so viele Informationen so präzise wie möglich zu geben. "Geht nicht" ist nicht hilfreich.

[ - Antworten - Zitieren - Direktlink - ]

19.06.2003, 00:32 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Kaesebroetchen:
Und eigentlich müsste der Amiga-G++ doch alles was der Linus-G++ fehlerfrei compiliert, genauso fehlerfrei compilieren (So lange es keine Betriebssystemspezifischen Sachen sind) oder ?

Nein, das trifft -wenn überhaupt- nur auf fehlerfreien Source-Code zu, nicht auf erfolgreiches Übersetzen. Und deshalb solltest Du eben alles, was Du an Hinweisen bekommst, auch auswerten. Da wären zum einen die Hinweise, die Dir Solar gegeben hat, zum anderen spuckt ein aktueller gcc unter Linux bei Deinem Programm aus
Zitat:
This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>.
Das sagt eigentlich schon alles.
Und wenn Du mit Fehlermeldungen bzw. Warnungen nichts anfangen kannst, so poste sie doch wenigstens zusammen mit der Fragestellung.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > g++ und CStrings [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.