Hallo,
ich habe ein Probelm mit unterschiedlichen Kompilerversionen.
Da ich mich mit dem Innenleben des gcc nicht gut auskenne brauche ich eure Hilfe.
Auf meinem Notebook läuft unter Daper gcc in der Version 4.0.3
cgogolin@deepthought[no battery]:~$ gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=pentium4 --enable-checking=release i486-linux-gnu Thread model: posix gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
Auf dem Cip Pool in der Uni haben wir unter Suse gcc in der Version 3.3.5 bzw. 4.1.0
cgogolin@wpyc014:~> gcc -v Reading specs from /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/specs Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib64 --enable-libgcj --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit x86_64-suse-linux Thread model: posix gcc version 3.3.5 20050117 (prerelease) (SUSE Linux)
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.0 --enable-ssp --disable-libssp --enable-java-awt=gtk --enable-gtk-cairo --disable-libjava-multilib --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit --enable-libstdcxx-allocator=new --without-system-libunwind --with-cpu=generic --host=x86_64-suse-linux Thread model: posix gcc version 4.1.0 (SUSE Linux)
Das von mir geschriebene Brogramm lässt sich Auf meinem Notebook und unter dem gcc 4.1.0 problemlos und ohne Warnungen Kompilieren. Beim Kompilieren mit dem gcc 3.3.5 kommt folgende Fehlermeldung:
BufOutFileStream.cc: In constructor `BufOutFileStream::BufOutFileStream(const char*, unsigned int, int, int)': BufOutFileStream.cc:22: error: no matching function for call to ` std::basic_ostream<char, std::char_traits<char> >::basic_ostream(const <anonymous>**)' /usr/include/c++/3.3.5/iosfwd:64: error: candidates are: std::basic_ostream<char, std::char_traits<char> >::basic_ostream(const std::basic_ostream<char, std::char_traits<char> >&) /usr/include/c++/3.3.5/ostream:106: error: std::basic_ostream<_CharT, _Traits>::basic_ostream(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>] make: *** [program] Error 1
Wie man sieht, wird der Fehler durch den Aufruf des Kostruktors der Basisklasse "std::ostream" hervor gerufen. Ich verwende den Konstruktor bei dem ich explizit ein "streambuf" Object zur Pufferung der in den Stream geschriebenen Daten übergeben kann.
Gibt es diese Funktion unter gcc 3.3.5 noch nicht?
Mache Ich etwas falsch?
Wie bekomme ich es hin, dass ich den Code unter beiden Versionen verwenden kann?
Danke!