[cfe-dev] Emulation of VC++ preprocessor
Edward Diener via cfe-dev
cfe-dev at lists.llvm.org
Mon Mar 28 14:29:30 PDT 2016
On 3/28/2016 4:58 PM, Reid Kleckner via cfe-dev wrote:
> On Mon, Mar 28, 2016 at 12:43 PM, Edward Diener via cfe-dev
> <cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>> wrote:
> Does the clang emulation of the VC++ non-standard preprocessor ever
> occur when clang ( or clang++ ) are invoked as opposed to clang-cl
> being invoked ?
> Conversely is the macro _MSC_VER ever predefined when clang ( or
> clang++ ) are invoked as opposed to clang-cl being invoked ?
> I am hoping the answer to both questions above is 'no', but if it is
> not I need to know what the exceptions are and why.
> Well, the answer to both is "yes". Essentially, the non-standard
> pre-processor behavior is enabled when clang is targeting an MSVC
> environment. This can happen if you run 'clang
> --target=x86_64-windows-msvc', for example. The good news is that
> _MSC_VER should always be defined when we are doing non-standard things,
> so you can use that as a feature test.
> It is technically possible for the user to invoke clang in a way that
> enables MSVC pre-processor quirks without defining _MSC_VER, but that is
> not expected to work with code in the wild.
> I tried to update or (poor) documentation on our flags here:
> It doesn't discuss pre-processor changes, unfortunately. I've forgotten
> what the even are.
Thanks for your explanation. I will, for all intents and purposes, use
_MSC_VER to indicate by clang that the non-standard preprocessor
behavior is in effect no matter if clang, clang++, or clang-cl is
invoked in Windows.
More information about the cfe-dev