[cc: list trimmed] On Fri, Jul 18, 2003 at 10:32:51AM +0200, Michael Nottebrock wrote: > I've tried to come up with a less obscure testcase: > > #include <string> > #include <iostream> > using namespace std; > > int main () > { > > string astring="Hello World"; > cout << astring << endl; > } > > Now, if I compile this on 5.1-RELEASE with > > c++ -Wnon-virtual-dtor -Wno-long-long -Wall -pedantic -W -Wpointer-arith > -Wmissing-prototypes -Wwrite-strings -DNDEBUG -DNO_DEBUG -O -pipe > -mcpu=pentiumpro -fno-check-new -L/usr/local/lib -I/usr/local/include > -I/usr/local/include -I/usr/X11R6/include -D_GETOPT_H -o helloworld > helloworld.cc > > I get a plethora of warnings: > > In file included from /usr/include/g++/memory:55, > from /usr/include/g++/string:48, > from helloworld.cc:1: > /usr/include/g++/bits/stl_alloc.h:979: warning: ISO C++ forbids the use of ` > extern' on explicit instantiations > /usr/include/g++/bits/stl_alloc.h:980: warning: ISO C++ forbids the use of ` > extern' on explicit instantiations > /usr/include/g++/bits/stl_alloc.h:981: warning: ISO C++ forbids the use of ` > extern' on explicit instantiations > /usr/include/g++/bits/stl_alloc.h:981: warning: ISO C++ forbids the use of ` > extern' on explicit instantiations > /usr/include/g++/bits/stl_alloc.h:981: warning: ISO C++ forbids the use of ` > extern' on explicit instantiations > > [and many, many more] > > but it will compile. If I omit -pedantic, none of these warnings occur. The > thing is, in -CURRENT with the new gcc, all these warnings for some reason > become errors. The other thing is, if I try this with with a ports-compiled > g++32 on 4-STABLE, I don't get warnings at all, no matter if -pedantic is > specified or not. > > So here's the questions for the experts: > > - Why errors instead of warnings? > - Why do gcc's own bits seem to not conform to some kind of standard that it > tries to adhere to in 5-CURRENT but not in 4-STABLE? > - Who's to blame? I haven't looked recently, but I seem to recall that the STL and other C++ header bits that we install in /usr/include are from an older GCC release than the compiler. On my pre-GCC 3.3 -CURRENT system: System compiler: % g++ -c -Wall -pedantic hello.cc <many warnings> GCC 3.2 from ports: % g++32 -c -Wall -pedantic hello.cc <no warnings> GCC 3.3 from ports: % g++33 -c -Wall -pedantic hello.cc <no warnings> I also recall lots of missing `typename's in the system headers that were resolved in the actual GCC distribution. Alexander, do the STL headers et. al. get updated with the rest of the compiler chain? Cheers, -- Jacques Vidrine . NTT/Verio SME . FreeBSD UNIX . Heimdal nectar_at_celabo.org . jvidrine_at_verio.net . nectar_at_freebsd.org . nectar_at_kth.seReceived on Fri Jul 18 2003 - 06:34:03 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:15 UTC