Emulation of VC++ preprocessor

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:
http://clang.llvm.org/docs/UsersManual.html#microsoft-extensions
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.