Eberhard Wilfrid ZFF TE-PR wrote:
Hallo,
ich habe eine Frage zu unterschiedlichen Versionen des Gnu compilers.
Bisher haben wir Suse Linux 7.2 mit dem dazugehörigen gnu c++ compiler verwendet, das übersetzten der folgenden Zeile war hier kein problem
switch (rw) { case 'r' : file.open(filename,ios::in || ios::nocreate); //if (!file) exit(-1); erstmal entfernt break; case 'w' : file.open(filename,ios::out); //if (!file) exit(-1); break; default : exit(-1); break; }
Jetzt verwenden wir Suse Linux 8.2 und bekommen bei der gleichen Zeile die Fehlermeldung:
ios undeclared
Was hat sich da in diesem Zusammenhang am Compiler geändert?
Danke schon mal für eure Hilfe.
Gruss
Wilfrid
Hallo, obwohl ich nicht sicher bin, hat sich da evtl. etwas an den Header-Dateien geändert. Wie auch immer, der Compiler hat beim finden des Symbols "ios" immer im Namespace "std" geschaut und ist dort fündig geworden. Das passiert nun nicht mehr. Es gibt mehrere Lösungen für dieses Problem. Ich empfehle, bei jeder Verwendung von ios den Namespace explizit anzugeben, also "std::ios" zu verwenden. Das gleiche gilt für alle Symbole, bei denen der Compiler seit der Umstellung meckert, z. B. die Container vector, set, map und auch string. Grüße Stefan