//GCC编译器
#ifdef __GNUC__
#if __GNUC__ >= 3 // GCC3.0 以上
//MSVC编译器
#ifdef _MSC_VER
#if _MSC_VER >=1000 // VC++4.0 以上
#if _MSC_VER >=1100 // VC++5.0 以上
#if _MSC_VER >=1200 // VC++6.0 以上
| #if _MSC_VER >=1300 // VC2003 #if _MSC_VER >=1400 // VC2005 #if _MSC_VER >=1500 // VC2008 #if _MSC_VER >=1600 // VC2010 #if _MSC_VER >=1700 // VC2012 #if _MSC_VER >=1800 // VC2013 #if _MSC_VER >=1900 // VC2015 | 以上 以上 以上 以上 以上 以上 以上 |
//Visual Studio版本与MSVC版本号的对应关系
| MSC MSC MSC MSC MSC MSC MSC | 1.0 2.0 3.0 4.0 5.0 6.0 7.0 | _MSC_VER == 100 _MSC_VER == 200 _MSC_VER == 300 _MSC_VER == 400 _MSC_VER == 500 _MSC_VER == 600 _MSC_VER == 700 |
| MSVC++ 1.0 MSVC++ 2.0 MSVC++ 4.0 MSVC++ 4.2 MSVC++ 5.0 MSVC++ 6.0 MSVC++ 7.0 MSVC++ 7.1 MSVC++ 8.0 MSVC++ 9.0 MSVC++ 10.0 MSVC++ 11.0 MSVC++ 12.0 MSVC++ 14.0 MSVC++ 14.1 | _MSC_VER == 800 _MSC_VER == 900 _MSC_VER == 1000 (Developer Studio 4.0) _MSC_VER == 1020 (Developer Studio 4.2) _MSC_VER == 1100 (Visual Studio 97 version 5.0) _MSC_VER == 1200 (Visual Studio 6.0 version 6.0) _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0) _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1) _MSC_VER == 1400 (Visual Studio 2005 version 8.0) _MSC_VER == 1500 (Visual Studio 2008 version 9.0) _MSC_VER == 1600 (Visual Studio 2010 version 10.0) _MSC_VER == 1700 (Visual Studio 2012 version 11.0) _MSC_VER == 1800 (Visual Studio 2013 version 12.0) _MSC_VER == 1900 (Visual Studio 2015 version 14.0) _MSC_VER == 1910 (Visual Studio 2017 version 15.0) |
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
//Borland C++
#ifdef __BORLANDC__
//Cygwin
#ifdef __CYGWIN__
#ifdef __CYGWIN32__
//mingw
#ifdef __MINGW32__
//windows
| #ifdef _WIN32 #ifdef _WIN64 #ifdef _WINDOWS #ifdef _CONSOLE | //32bit //64bit //图形界面程序 //控制台程序 |
//Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了
| #if (WINVER >= 0x030a) #if (WINVER >= 0x0400) #if (WINVER >= 0x0410) #if (WINVER >= 0x0500) #if (WINVER >= 0x0501) | // Windows 3.1以上 // Windows 95/NT4.0以上 // Windows 98以上 // Windows Me/2000以上 // Windows XP以上 |
#if (WINVER >= 0x0600) // Windows Vista以上
//_WIN32_WINNT 内核版本
#if (_WIN32_WINNT >= 0x0500) // Windows 2000以上
#if (_WIN32_WINNT >= 0x0501) // Windows XP以上
#if (_WIN32_WINNT >= 0x0600) // Windows Vista以上



