From: Csaba Raduly <rcsaba@gmail.com>
To: cygwin list <cygwin@cygwin.com>
Subject: Re: cygwin x86_64: mingw64-g++ 6.4.0 (both i686 and x86_64) issue (bug?) with reinterpret_cast
Date: Wed, 01 Nov 2017 14:25:00 -0000 [thread overview]
Message-ID: <CAEhDDbAydKbO2wv0Mf9ScPHeEirF1Q483Z19mrPmgN_uPRso0Q@mail.gmail.com> (raw)
In-Reply-To: <515e5221f28f4df880916eaa1b25b7aa@SFHDAG5NODE3.st.com>
On Tue, Oct 31, 2017 at 11:00 AM, Paolo ZAMBOTTI wrote:
> Hi Csaba,
>
Please don't top-post (at least in this mailing list).
> Ok, then the issue are "my" lines of code and the error messages from g++ were not completely clear (and they was confusing me a little bit)...
> But I'm still not sure the issue is not in Cygwin package. I mean, my test code was a very simplified (too much simplified) excerpt from squid source code and, there, the link with header file from cygwin package is more clear.
> Then, let me post another test file where this link is more clear.
>
> Now the failure is as follow (g++ -std=gnu++11 -c -Wall -pedantic -Wextra test.cpp)
>
> In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/winbase.h:19:0,
> from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:70,
> from test.cpp:1:
> test.cpp:6:45: error: reinterpret_cast from integer to pointer
> static constexpr HANDLE InvalidHandle = INVALID_HANDLE_VALUE;
> ^
>
> The issue is now within the macro definition of INVALID_HANDLE_VALUE in file handleapi.h (which could be, from i686-w64-mingw32, x86_64-w64-mingw32 or w32api)
>
> Now I'm wondering what is really wrong:
> does the definition of INVALID_HANDLE_VALUE need to be rewritten in order to be compatible with the "static constexpr" line
There's nothing wrong with INVALID_HANDLE_VALUE with regards to
"static constexpr", although a constexpr expression cannot contain
reinterpret_cast-s,
and a C-style cast can resort to be a reinterpret_cast. But this
doesn't seem to be the problem (there's a different error message for
that).
HANDLE is defined as a pointer:
include/wtypesbase.h:52:typedef void *HANDLE;
LONG_PTR is defined as an integer:
basetsd.h:54:typedef long LONG_PTR,*PLONG_PTR;
INVALID_HANDLE_VALUE is defined in handleapi.h:16 as
#define INVALID_HANDLE_VALUE ((HANDLE) (LONG_PTR)-1)
so you have a cast right there. Whenever you use INVALID_HANDLE_VALUE,
the compiler sees a cast from long to void*
I don't know how this could be fixed. You may want to ask on a
mingw-specific mailing list.
You could try adding -isystem /path/to/mingw/headers so mingw-gcc
finds its headers that way (warnings tend to be suppressed for headers
found in directories specified with -isystem rather than -i, although
mingw-gcc's built-in headers should be treated the same way).
(disclaimer: I havent tried this).
> or
> does "my" line of code has to be rewritten in order to be compatible with the INVALID_HANDLE_VALUE definition?
>
> In the latest case, any suggestion will be very welcome...
>
> Paolo.
Csaba
--
GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
The Tao of math: The numbers you can count are not the real numbers.
Life is complex, with real and imaginary parts.
"Ok, it boots. Which means it must be bug-free and perfect. " -- Linus Torvalds
"People disagree with me. I just ignore them." -- Linus Torvalds
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
next prev parent reply other threads:[~2017-11-01 14:25 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-31 10:01 Paolo ZAMBOTTI
2017-11-01 14:25 ` Csaba Raduly [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-10-23 14:47 Paolo ZAMBOTTI
2017-10-23 23:26 ` JonY
2017-10-24 9:19 ` Csaba Raduly
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAEhDDbAydKbO2wv0Mf9ScPHeEirF1Q483Z19mrPmgN_uPRso0Q@mail.gmail.com \
--to=rcsaba@gmail.com \
--cc=cygwin@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).