From: dbt@adm.csc.ncsu.edu (David B. Teague)
Subject: Problems with gcc2.3.1 and iostream/(iostream|streambuf).h
Followup-To: bray@wcuvax1.wcu.edu
Organization: wcuvax1.wcu.edu (CS Dept, Western Carolina University)
Distribution: gnu
Date: Mon, 16 Nov 1992 21:59:37 GMT

  I have been attempting to make what according to the README is libg++
2.1, using gcc 2.3.1, on a Gateway 486 box running Consensys sysV.4
(Double Yuck!).
  This is done without the -O flag: with -O, the compiler apparently
generates multiple instances of labels, which the assembler balks at,
but that is a separate problem.
  After the libg++ make output, I will include a test.cc program that David 
Teague wrote to explore this, and the resulting error messages.
  Note that there is nothing obviously wrong with these include files.

--Jim


tinuviel#cd /usr/local/libg++
tinuviel#make clean
/bin/sh ./config.status
Created "Makefile" in /usr/local/libg++ using "config/mh-sysv4"
./config.status is unchanged

[ STUFF DELETED ]

tinuviel#make all


rootme=`pwd` ; export rootme; CC="gcc `if [ -f ${rootme}/../gcc/gcc ] ; then echo -I${rootme}/../gcc/include ; else echo ; fi`"; export CC; ./utils/gen-params  >tmp-params.h
mv tmp-params.h _G_config.h
gcc -g -nostdinc++ -I.. -I. -I./../iostream -I./../g++-include  -c AllocRing.cc
gcc -g -nostdinc++ -I.. -I. -I./../iostream -I./../g++-include  -c Obstack.cc
gcc -g -nostdinc++ -I.. -I. -I./../iostream -I./../g++-include  -c builtin.cc
gcc -g -nostdinc++ -I.. -I. -I./../iostream -I./../g++-include  -c regex.cc


Everything seems to be ok until here in the make:


gcc -g -nostdinc++ -I.. -I. -I./../iostream -I./../g++-include  -c Regex.cc
Regex.cc: In method `Regex::Regex (const char *, int (=  0 ), int (=  40 ), const char * (=  0 ))':
Regex.cc:52: warning: ANSI C++ forbids implicit conversion from `void *' in assignment
Regex.cc:59: warning: ANSI C++ forbids implicit conversion from `void *' in assignment
gcc -g -nostdinc++ -I.. -I. -I./../iostream -I./../g++-include  -c String.cc
In file included from ./../iostream/iostream.h:25, from ./../iostream/stream.h:7, from ./String.h:26, from String.cc:25:
./../iostream/streambuf.h:359: warning: type specifier omitted for parameter
./../iostream/streambuf.h:359: parse error before `,'
./../iostream/streambuf.h:360: warning: type specifier omitted for parameter
./../iostream/streambuf.h:360: parse error before `)'
In file included from ./../iostream/stream.h:7, from ./String.h:26, from String.cc:25:
./../iostream/iostream.h:60: warning: type specifier omitted for parameter
./../iostream/iostream.h:60: parse error before `)'
./../iostream/iostream.h:152: warning: type specifier omitted for parameter
./../iostream/iostream.h:152: parse error before `)'
./../iostream/iostream.h:225: warning: type specifier omitted for parameter
./../iostream/iostream.h:225: parse error before `)'
./../iostream/iostream.h:247: warning: type specifier omitted for parameter
./../iostream/iostream.h:247: parse error before `)'
./../iostream/iostream.h: In method `class streambuf::istream& iostream::vscan (...)':
./../iostream/iostream.h:226: `format' undeclared (first use this function)
./../iostream/iostream.h:226: (Each undeclared identifier is reported only once
./../iostream/iostream.h:226: for each function it appears in.)
./../iostream/iostream.h:226: `args' undeclared (first use this function)
./../iostream/iostream.h:226: warning: control reaches end of non-void function
./../iostream/iostream.h: In method `class ostream& iostream::vform (...)':
./../iostream/iostream.h:248: `format' undeclared (first use this function)
./../iostream/iostream.h:248: `args' undeclared (first use this function)
./../iostream/iostream.h:248: warning: control reaches end of non-void function
make[2]: *** [String.o] Error 1
make[1]: *** [in-src] Error 1
make: *** [all-libg++] Error 1

tinuviel#./config.status is unchanged
Created "Makefile" in /usr/local/libg++ using "config/mh-sysv4"
./config.status is unchanged
tinuviel#

test.cc:
#include "iostream.h"
struct T
{
   int i = 5;
};

T t;

main ()
{
  cout << t.i << "\n";
}

Here are the results:

In file included from iostream.h:25, from test.cc:1:
streambuf.h:359: warning: type specifier omitted for parameter
streambuf.h:359: parse error before `,'
streambuf.h:360: warning: type specifier omitted for parameter
streambuf.h:360: parse error before `)'
In file included from test.cc:1:
iostream.h:60: warning: type specifier omitted for parameter
iostream.h:60: parse error before `)'
iostream.h:152: warning: type specifier omitted for parameter
iostream.h:152: parse error before `)'
iostream.h:225: warning: type specifier omitted for parameter
iostream.h:225: parse error before `)'
iostream.h:247: warning: type specifier omitted for parameter
iostream.h:247: parse error before `)'
iostream.h: In method `class streambuf::istream& iostream::vscan (...)':
iostream.h:226: `format' undeclared (first use this function)
iostream.h:226: (Each undeclared identifier is reported only once
iostream.h:226: for each function it appears in.)
iostream.h:226: `args' undeclared (first use this function)
iostream.h:226: warning: control reaches end of non-void function
iostream.h: In method `class ostream& iostream::vform (...)':
iostream.h:248: `format' undeclared (first use this function)
iostream.h:248: `args' undeclared (first use this function)
iostream.h:248: warning: control reaches end of non-void function

Newsgroups: gnu.g++.lib.bug