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