Fix compilation with old versions of MSVC.

Some old versions of MSVC have broken C preprocessors and failed to
handle #ifdef/#else/#endif in the middle of a macro call.  Just