[LLVMdev] COFF.h and windows.h conflict
Virgile Bello
virgile.bello at gmail.com
Wed Aug 28 19:19:40 PDT 2013
It was happening in a few files using COFF.h in LLDB for the windows branch
(Windows.h is required for some typedef over Mutex, thread, socket, etc...).
As said before, I am currently checking if it could be avoided (probably
some refactoring will be needed). However I was wondering if it might not
be easier to just avoid this clash at all by avoiding it in LLVM.
Alternatively I could #undef everything right after including Windows.h.
On Thu, Aug 29, 2013 at 11:08 AM, Nick Kledzik <kledzik at apple.com> wrote:
>
> On Aug 28, 2013, at 7:05 PM, Virgile Bello <virgile.bello at gmail.com>
> wrote:
>
> Right now, we have:
> In COFF.h:
> class COFF { enum MachineTypes { IMAGE_FILE_MACHINE_UNKNOWN = 0x0,
> ... }; };
> In windows.h:
> #define IMAGE_FILE_MACHINE_UNKNOWN 0
>
> * If you first include COFF.h and then windows.h,
> COFF::IMAGE_FILE_MACHINE_UNKNOWN
> will be preprocessed into
> COFF:0.
>
> * If you first include Windows.h and then COFF.h, COFF.h won't work
> because it's enum will become:
> enum MachinTypes { 0 = 0x0 };
>
> Sorry, I was not clear. Why is Windows.h being included at all? That
> header does not exist on some OS’s so the code would not build be portable.
> If this use is in the one or two files of llvm that implement platform
> support, why is COFF.h being included in those instances?
>
> -Nick
>
>
>
>
> On Thu, Aug 29, 2013 at 6:03 AM, Nick Kledzik <kledzik at apple.com> wrote:
>
>>
>> On Aug 27, 2013, at 5:56 PM, Virgile Bello <virgile.bello at gmail.com>
>> wrote:
>>
>> Yes of course I understand it was done on purpose.
>> It's just that it makes it impossible to include COFF.h and Windows.h
>> side by side (which probably wasn't necessary until now).
>>
>>
>> I too am in the camp that it is a feature to use the standard names. For
>> instance doing a search it google or github of the documented names will
>> find uses.
>>
>> Where exactly is the conflict happening? Is the problem that something
>> in llvm is including windows.h? Or that some std lib C/C++ header is being
>> included and the OS provided std header is including windows.h?
>>
>> -Nick
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130829/39c2d876/attachment.html>
More information about the llvm-dev
mailing list