staging.inyokaproject.org

gcc Problem mit Abwärtskompatibliltät

Status: Ungelöst | Ubuntu-Version: Xubuntu 6.06 (Dapper Drake)
Antworten |

cgogolin

Anmeldungsdatum:
4. Juli 2006

Beiträge: 169

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!

Antworten |