Is there a preprocessor define that is defined if the compiler is MSVC?
It's _MSC_VER. More info at MSDN and at predef.
But, be aware that some other compilers may also define it, e.g. Intel's C++ Compiler for Windows also defines _MSC_VER. If this is a concern, use #if _MSC_VER && !__INTEL_COMPILER
.
Look at the list of MSVC predefined macros. You'll find what you need.
_MSC_VER
is probably a good one.