By the way, it's really not clear to me what specific solution you are
proposing when you say "ensure each GUID is defined only once" but I'm
imagining it will introduce new incompatibilities/quirks that people have
to worry about when switching between Visual Studio and mingw-w64, because
you would have to prevent any GUID definitions from being emitted by header
files.

--David

On Wed, May 3, 2017 at 8:12 AM, David Grayson <[email protected]>
wrote:

> > It sounds like guiddef.h should probably check the GCC major version.
>> > Based on the tests people have reported in this thread, I would guess
>> that
>> > for GCC 6 and above the selectany attribute on the declaration is
>> required,
>> > while on GCC 5 and below the selectany attribute on the declaration is
>> > forbidden. Or we could get fancy and add a test to the configure script
>> to
>> > figure out which is the case.
>> Both require citation from GCC documentation. But neither is an optimal
>> solution IMHO. I suggest we ensure each GUID is defined only once then
>> remove that attribute completely.
>>
>
> When you say "optimal", what are you optimizing for?
>
> I'm trying to optimize for being able to port code from Visual Studio to
> mingw-w64.  Microsoft has example code (UsbView) that has a header file
> that includes the windows.h, followed by initguid.h, followed by
> winioctl.h.  You can see the header file here:
>
> https://github.com/Microsoft/Windows-driver-samples/blob/
> master/usb/usbview/uvcview.h
>
> The UsbView code uses that header file in several different translation
> units, so you end up having a bunch of duplicate GUID definitions for all
> the GUIDs defined in winioctl.h, like GUID_DEVINTERFACE_DISK.  To prevent
> multiple definition errors, the Microsoft header files using the selectany
> attribute.
>
> I don't know why Microsoft engineered such a complicated solution for
> defining GUIDs, but they did, and I would think we should try to make our
> header files compatible with it.  If it just takes a few preprocessor if
> statements that check the GCC version, that seems OK.
>
> --David
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to