This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: w32api bugfix (was: Currently, CVS setup.exe does not compile, due to warnings with 'warnings as errors' in effect. How best to change code to avoid warnings?)


Responses below

Max.

----- Original Message -----
From: "Robert Collins" <robert.collins@itdomain.com.au>
To: "Max Bowsher" <maxb@ukf.net>; <cygwin@cygwin.com>
Sent: Sunday, March 03, 2002 9:20 PM
Subject: RE: w32api bugfix (was: Currently, CVS setup.exe does not compile,
due to warnings with 'warnings as errors' in effect. How best to change code
to avoid warnings?)
>
>
>
>
> > -----Original Message-----
> > From: Max Bowsher [mailto:maxb@ukf.net]
> > Sent: Sunday, March 03, 2002 9:36 PM
> > To: cygwin@cygwin.com
> > Subject: w32api bugfix (was: Currently, CVS setup.exe does
> > not compile, due to warnings with 'warnings as errors' in
> > effect. How best to change code to avoid warnings?)
> >
> >
> > > Hmm, does C++ support the same feature? If not then an ifdef
> > > __cplusplus might do it.
> >
> > Unfortunately not - the problem is the differing
> > interpretation of the line 'typedef int (WINAPI *FARPROC)();'
> > in 3 sets of circumstances:
> >
> > 1) C++
> >         'int proc();' and 'int proc(void);' are synonyms. No problem.
>
> Does the error trigger under g++ ? IIRC your original post correctly, it
> does. If so, then gcc's warning is flawed.

No, I was just mentioning another
situation in which the header files could be used.

> > 2) C, -Wstrict-prototypes NOT in effect
> >         'int proc();' means: use no compiler type checking
> > for the parameters if proc
> >         'int proc(void);' means: proc takes no parameters
>
> Ah, this is the killer then. Do we actually hit this during a C file
> compilation? We've only a couple of C files - autoload and mklink2.  I
> wonder if we can detect that -Wstrict-prototypes is on in the header -
> something like
> #if !pramga(strict-on) || defined (_cplusplus)
> ...
> #endif

Yes - mklink2.c - relevant build output
below. Detecting -Wstrict-prototypes would be ideal, but I do not think
there is
such a feature in gcc. Which leaves the following possibilities:
1) Annoy the X people - get them to stick in some prototypes and casts, etc.
2) Rewrite mklink2.c as C++
3) Stop using -Wstrict-prototypes
4) Create a STRICT_PROTOTYPES_NEEDED define, and alter the headers to honour
it.
Umm...

gcc -c -g -O2 -Werror -Winline -Wall -Wpointer-arith -Wcast-align -Wwrite-st
rings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wcomm
ents ... mklink2.c
cc1.exe: warnings being treated as errors
In file included from
/home/max/cvsstuff/cygwin/src-work/winsup/w32api/include/windows.h:101,
                 from win32.h:34,
                 from mklink2.c:2:
/home/max/cvsstuff/cygwin/src-work/winsup/w32api/include/windef.h:203:
warning:function declaration isn't a prototype
/home/max/cvsstuff/cygwin/src-work/winsup/w32api/include/windef.h:204:
warning:function declaration isn't a prototype
/home/max/cvsstuff/cygwin/src-work/winsup/w32api/include/windef.h:205:
warning:function declaration isn't a prototype
make: *** [mklink2.o] Error 1



> > Summary:
> > The construct 'typedef int (WINAPI *FARPROC)();' in w32api
> > causes an error with -Wstrict-prototypes -Werror. This can be
> > worked around by adding 'void' in the empty brackets.
> > Downside:
> > This breaks C code where people were using the w32api types
> > FARPROC, NEARPROC, PROC, to call procedures without
> > typechecking the arguments. I think this is totally
> > irrelevant, as deliberately bypassing the compiler type
> > checking is very silly, and I doubt anyone does that anymore.
>
> Actually, they do. Someone turned the (void) off again after I'd put it
> in there because the X code needed it.
>
> > Anyway, before I go submitting a patch which breaks backward
> > compatibility, even in such a rare and unused case, I want to
> > raise this issue here.
>
> Thank you.

No problem

> Rob
>
>
>
>

Attachment: smime.p7s
Description: application/pkcs7-signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]