3.2.2 c++ compile problems

Craig Rodrigues rodrigc@attbi.com
Mon Dec 23 10:11:00 GMT 2002


On Mon, Dec 23, 2002 at 12:18:18PM -0500, Jack Howarth wrote:
> Hello,
>    Can anyone shed some light on which abi change in the g++ 3.2.x
> compiler is causing the following compile error. I am trying to build
> the sparky package from...
> 
> 
> http://www.cgl.ucsf.edu/home/sparky/
> 
> and I get the following compile time errors under gcc 3.2.2...
> 
> g++ -O2 -fPIC -fpermissive -c brukerfile.cc
> In file included from /usr/include/c++/3.2.1/backward/fstream.h:31,
>                  from brukerfile.cc:33:
> /usr/include/c++/3.2.1/backward/backward_warning.h:32:2: warning: #warning 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 substit
> brukerfile.cc: In constructor `Bruker_Params::Bruker_Params(const Stringy&)':
> brukerfile.cc:223: could not convert `bp' to `istream&'
> brukerfile.cc:101: in passing argument 1 of `bool 
>    read_parameter_entry(istream&, Stringy*, Stringy*)'
> make[1]: *** [brukerfile.o] Error 1
> make[1]: Leaving directory `/usr/local/src/sparky/c++'
> make: *** [all] Error 2



The sparky source code seems to have several forward declarations which 
are wrong.   For example, in stringc.h:

 3 #ifndef STRING_HEADER_INCLUDED
      4 #define STRING_HEADER_INCLUDED
      5
      6 #include <stdarg.h>
      7
      8 #undef NULL             // Fix bad define in stddef.h gnu distribution.
      9 #define NULL 0L
     10
     11 class istream;
     12 class ostream;

You need to replace lines 11 and lines 12 with:

#include <iosfwd>
using namespace std;


The reason for this is that istream and ostream are not classes
in Standard C++.
They are typedefs for templates.  Look in <iosfwd> to see what
I am referring to.  You need to make this change in:

format.h
nmrdata.h
rectangle.h
savefile.h
stringc.h

-- 
Craig Rodrigues        
http://www.gis.net/~craigr    
rodrigc@attbi.com



More information about the Gcc mailing list