public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* RE: Currently, CVS setup.exe does not compile, due to warnings with 'warnings as errors' in effect. How best to change code to avoid warnings?
@ 2002-03-02 11:14 Robert Collins
  2002-03-03 10:01 ` 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?) Max Bowsher
  0 siblings, 1 reply; 3+ messages in thread
From: Robert Collins @ 2002-03-02 11:14 UTC (permalink / raw)
  To: Max Bowsher, cygwin



> -----Original Message-----
> From: Max Bowsher [mailto:maxb@ukf.net] 

> What do the experts think?

Hmm, does C++ support the same feature? If not then an ifdef __cplusplus
might do it.

Rob

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* 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?)
  2002-03-02 11:14 Currently, CVS setup.exe does not compile, due to warnings with 'warnings as errors' in effect. How best to change code to avoid warnings? Robert Collins
@ 2002-03-03 10:01 ` Max Bowsher
  0 siblings, 0 replies; 3+ messages in thread
From: Max Bowsher @ 2002-03-03 10:01 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 1342 bytes --]

> Hmm, does C++ support the same feature? If not then an ifdef __cplusplus
> might do it.

> Rob

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.

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

3) C, -Wstrict-prototypes in effect
        'int proc();' means: ditto AND causes a warning (which, since setup
is compiled with 'warnings as errors' on, stops the build)
        'int proc(void);' means: ditto

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.

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.


Max.

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2688 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Currently, CVS setup.exe does not compile, due to warnings with 'warnings as errors' in effect. How best to change code to avoid warnings?
@ 2002-03-02 10:35 Max Bowsher
  0 siblings, 0 replies; 3+ messages in thread
From: Max Bowsher @ 2002-03-02 10:35 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 841 bytes --]

Currently, CVS setup.exe does not compile, due to warnings with 'warnings as
errors' in effect. How best to change code to avoid warnings?

Warning in winsup/bz2lib/bzlib.c:

static char *bzerrorstrings[] = {
       "OK"
....

This requires the insertion of a const qualifier. I'm mentioning this in
passing - this change is obviously correct. The main point is the next
warning:

Warning in winsup/w32api/include/windef.h:

typedef int (WINAPI *FARPROC)();
typedef int (WINAPI *NEARPROC)();
typedef int (WINAPI *PROC)();

Since -Wstrict-prototypes is in effect, gcc won't accept empty sets of
brackets to declare a function. Adding void between the brackets solves the
problem _here_, but is this a good thing to do, given that it would break
code using C's unchecked parameters feature with these types?

What do the experts think?


Max.

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2688 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2002-03-03 18:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-03-02 11:14 Currently, CVS setup.exe does not compile, due to warnings with 'warnings as errors' in effect. How best to change code to avoid warnings? Robert Collins
2002-03-03 10:01 ` 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?) Max Bowsher
  -- strict thread matches above, loose matches on Subject: below --
2002-03-02 10:35 Currently, CVS setup.exe does not compile, due to warnings with 'warnings as errors' in effect. How best to change code to avoid warnings? Max Bowsher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).