Vielen Dank für die Antwort, hab ich gleich ausprobiert und jetzt geht dieses kleine Beispiel einwandfrei. Wahrscheinlich muss ich zugeben, dass ich in der Vergangenheit wahrscheinlich etwas schlampig programmiert habe. Bisher habe ich Dinge wie namespaces schlicht ignoriert... und main als void zu definieren ging auch immer sehr gut. Prinzipiell finde ich das auch sehr gut wenn man vom Compiler zu eher hochwertigem Code gezwungen wird. Aber mein eigentliches Problem ist nicht diese triviale String Beispiel - vielmehr versuche ich gerade Flex und Bison mit dem gcc 3.3.1 ans Laufen zu bekommen. Das ist dann leider automatisch generierter Source Code und der will irgendwie überhaupt nicht. Das sind Sourcen, die unter SUSE 7.3 bestens funktionierten. Gibt es einen Schalter beim gcc der diesen etwas gnädiger mit meinem dann wohl eher "unsauberen" Code umgehen läßt ?? Oder muß ich eine ältere gcc Version installieren ? Woher bekomme ich die dann ? Gruß und Danke Gebhard Stefan Hundhammer wrote:
On Sunday 15 February 2004 14:45, Gebhard Sieweke wrote:
test.cpp:6: error: `main' must return `int'
Da hat er ja Recht. ;-)
test.cpp: In function `int main(...)': test.cpp:8: error: `string' undeclared (first use this function) test.cpp:8: error: (Each undeclared identifier is reported only once for each function it appears in.) test.cpp:8: error: parse error before `;' token
Seit der 8.2 prüft g++ sehr viel strenger - auch für alle STL-Aufrufe muß man den Name-Space ("std::") angeben.
Strenggenommen kann man das jedesmal extra:
std::string nachname; std::string vorname; std::string strasse;
...aber das macht wenig Spaß und den Code recht unleserlich. Man kann auch einmal explizit angeben, daß man mit "string" immer "std::string" meint:
using std::string;
string nachname; string vorname; string strasse;
Schlampig wäre es, einfach ganz auf diesen Name-Space umzusteigen:
using namespace std; // BLOSS NICHT!!
CU