1) About _msc_ver macro definition
#ifdef _msc_ver
#if _msc_ver >=600//C Compiler 6.0 to reduce VC + + including 飲む
#if _msc_ver >=700//C + + Compiler 7.0 to reduce VC + + including 飲む
#if _msc_ver >=800//vc++1.0 to reduce
#if _msc_ver >=900//vc++2.0 to reduce
#if _msc_ver >=1000//vc++4.0 to reduce
#if _msc_ver >=1010//vc++4.1 to reduce
#if _msc_ver >=1020//vc++4.2 to reduce
#if _msc_ver >=1100//vc++5.0 to reduce
#if _msc_ver >=1200//vc++6.0 to reduce
#if _msc_ver >=1300//VC2002 (VC7.0) to reduce
#if _msc_ver >=1310//VC2003 (VC7.1) to reduce
#if _msc_ver >=1400//VC2005 (VC8.0) to reduce
#if _msc_ver >=1500//VC2008 (VC9.0) to reduce
#if _msc_ver >=1600//VC2010 (VC10.0) to reduce
#ifdef _msc_ver >= N
#pragma once
#endif
2) ifdef _WIN32
#ifdef _win32 //note the underscore:without it, it ' s not MSDN official!
//Windows (x64 and x86)
#elif __unix__ //all unices, not all Compilers
//unix
#elif __ linux__
//linux
#elif __apple__
//Mac OS, not sure if the is covered by __posix__ a nd/or __unix__ though ...
#endif
About VC + + compilation