[cfe-dev] clang 'emulating' VC++ on Windows predefined macros

Aaron Ballman via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 28 08:43:09 PDT 2016


On Mon, Mar 28, 2016 at 11:32 AM, Edward Diener via cfe-dev
<cfe-dev at lists.llvm.org> wrote:
> On 3/28/2016 10:00 AM, Yaron Keren via cfe-dev wrote:
>>
>> Both __clang__ and _MSC_VER would be defined for clang-cl. In this mode
>> you are more likely to use clang or gcc-compatible features rather than
>> the VC bugs/workarounds, not all of which are emulated by clang-cl.
>
>
> To what is _MSC_VER set when clang-cl is used ?

It can be controlled with -fms-compatibility-version, which currently
defaults to 1800.

~Aaron

> Does clang when using the -fms-compatibility or -fms-extensions flags
> implement the 'emulated' VC++ non-standard preprocessor ? If so are both
> __clang__ and _MSC_VER defined when that happens ?
>
> For my purposes I am only concerned with detecting, at preprocessing time,
> clang 'emulating' the non-standard VC++ preprocessor. I understand that
> there are other C++ issues in this emulation of VC++, such as those you have
> reported below.
>
>>
>> Some examples from the last time I tried using Boost with clang-cl :
>>
>> https://svn.boost.org/trac/boost/ticket/11821
>> https://svn.boost.org/trac/boost/ticket/11832
>>
>>
>> 2016-03-28 14:43 GMT+03:00 Edward Diener via cfe-dev
>> <cfe-dev at lists.llvm.org
>> <mailto:cfe-dev at lists.llvm.org>>:
>>
>>     There is a build of clang which 'emulates' VC++ including the
>>     non-standard VC++ preprocessor. How can I tell, via preprocessor
>>     defines, when this occurs in preprocessor code ?
>>
>>     I am the author of Boost VMD and a maintainer of Boost PP and I need
>>     to set internal macros in both, when the non-standard VC++
>>     preprocessor is being used, so that the VC++ workarounds which allow
>>     both libraries to work with VC++ are in effect.
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev


More information about the cfe-dev mailing list