1) 关于_MSC_VER 宏定义
#ifdef _MSC_VER
#if _MSC_VER >=600 // C Compiler 6.0以降 VC++含む
#if _MSC_VER >=700 // C/C++ Compiler 7.0以降 VC++含む
#if _MSC_VER >=800 // VC++1.0以降
#if _MSC_VER >=900 // VC++2.0以降
#if _MSC_VER >=1000 // VC++4.0以降
#if _MSC_VER >=1010 // VC++4.1以降
#if _MSC_VER >=1020 // VC++4.2以降
#if _MSC_VER >=1100 // VC++5.0以降
#if _MSC_VER >=1200 // VC++6.0以降
#if _MSC_VER >=1300 // VC2002(VC7.0)以降
#if _MSC_VER >=1310 // VC2003(VC7.1)以降
#if _MSC_VER >=1400 // VC2005(VC8.0)以降
#if _MSC_VER >=1500 // VC2008(VC9.0)以降
#if _MSC_VER >=1600 // VC2010(VC10.0)以降
#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 this is covered by __posix__ and/or __unix__ though...
#endif