From: jan AT digicash DOT com (Jan Nieuwenhuizen) Subject: gcc 2.7.2 or (windows-only) snapshot? 23 Sep 1997 03:28:16 -0700 Message-ID: <199709231008.MAA15544.cygnus.gnu-win32@digicash.com> To: gnu-win32 AT cygnus DOT com Cc: "Wendy" Hi, The cygnus' gcc-2.7.2 of the windows port (b18), has different behaviour than gcc-2.7.2{.x} on unix boxes. It prints lots of new warnings (even in reent.h, math.h) to the sadly scrolling dos box, and more seriously, "finds" errors that other gcc's don't find. Although some errors found on windows really are errors, this still means that code that compiles on unix often breaks on windows; and has to be "ported" again. Wouldn't it be nice if the extra errors found on windows could be found on unix too, and if the ghost-errors would go away. Or, uhmm if the extra errors were converted to warnings (in b19?) until they can be detected on unix. It would be nice if the -w switch worked for the poor dos box. Here is an example: /* gcc-warn.cc silly c++ source for "gcc 2.7.2" on several platforms On unix platforms, e.g.: 09:27:15 mfb ~/lelie/lilypond-0.1.16.jcn1$ gcc -v Reading specs from /usr/lib/gcc-lib/i386-linux/2.7.2.1/specs gcc version 2.7.2.1 or 9:27:34 gin ~/c++$ gcc -v Reading specs from /home/jan/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2.1/specs gcc version 2.7.2.1 do make 'CFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion' gcc-warn and gcc compiles and links without a wink. On 09:35:16 MUB ~/c++$ gcc -v Reading specs from \gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404\specs gcc version cygnus-2.7.2-970404 do make 'CFLAGS=-w' gcc-warn and get (lots of warnings in spite of -w), and: gcc-warn.cc:30: syntax error before `(' // yup, an error gcc-warn.cc: In function `int main()': gcc-warn.cc:37: ambiguous overload for `Foo & + int' // hmm... gcc-warn.cc:37: candidates are: operator +(int, int) gcc-warn.cc:37: operator +(const char *, int) gcc-warn.cc:23: operator +(Foo, Foo) */ class Foo { public: Foo (int i) { i_ = i; } operator char const* () { return ""; } operator int () { return i_; } private: int i_; }; char const* operator +(Foo left, Foo right) { return (char const*)left + (int)right; } class Bar { public: Foo (); }; int main () { Foo a (0); char const* p = a + 1; return 0; } Jan Nieuwenhuizen | LilyPond - The GNU music typesetter http://www.digicash.com/~jan | http://www.stack.nl/~hanwen/lilypond/ - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".