亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢測我是否正在使用特定的Visual Studio版本編譯代碼?

如何檢測我是否正在使用特定的Visual Studio版本編譯代碼?

C++
鳳凰求蠱 2019-10-04 15:04:41
有沒有辦法知道我是否在特定的Microsoft Visual Studio版本下進行編譯?
查看完整描述

3 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

_MSC_VER可能_MSC_FULL_VER就是您所需要的。您還可以在任何最新的boost安裝中檢查visualc.hpp,以獲得一些用法示例。


最新版本的編譯器的一些值是:


MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)

MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)

MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)

MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)

MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)

MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)

MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)

MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)

MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)

MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)

MSVC++ 9.0   _MSC_FULL_VER == 150030729 (Visual Studio 2008, SP1)

MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)

MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)

MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)

MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)

MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)

MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)

上面的版本號當然是指您在“關于”框中看到的Visual Studio的主要版本,而不是名稱中的年份。完整的列表可以在這里找到。從最近開始,Visual Studio將開始單調更新其范圍,這意味著您應該檢查范圍,而不是確切的編譯器值。


cl.exe /? 將提示使用的版本,例如:


c:\program files (x86)\microsoft visual studio 11.0\vc\bin>cl /?

Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86

.....


查看完整回答
反對 回復 2019-10-04
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

是的_MSC_VER是將為您提供編譯器版本的宏。Visual C ++的最后發行版本的格式為<compiler-major-version>.00.<build-number>,其中00是次要版本號。因此_MSC_VER將評估為<major-version><minor-version>。


您可以使用如下代碼:


#if (_MSC_VER == 1500)

   // ... Do VC9/Visual Studio 2008 specific stuff

#elif (_MSC_VER == 1600)

   // ... Do VC10/Visual Studio 2010 specific stuff

#elif (_MSC_VER == 1700)

   // ... Do VC11/Visual Studio 2012 specific stuff

#endif

它似乎在編譯器的后續發行版之間進行了更新,但尚未修改compiler-minor-version,因此不需要以下代碼:


#if (_MSC_VER >= 1500 && _MSC_VER <= 1600)

   // ... Do VC9/Visual Studio 2008 specific stuff

#endif

可以在此處使用其他內置的預處理程序變量來訪問更詳細的版本信息(例如,編譯器內部版本號)。


查看完整回答
反對 回復 2019-10-04
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

這有點舊,但應該可以幫助您入門:


//******************************************************************************

// Automated platform detection

//******************************************************************************


// _WIN32 is used by

// Visual C++

#ifdef _WIN32

#define __NT__

#endif


// Define __MAC__ platform indicator

#ifdef macintosh

#define __MAC__

#endif


// Define __OSX__ platform indicator

#ifdef __APPLE__

#define __OSX__

#endif


// Define __WIN16__ platform indicator 

#ifdef _Windows_

#ifndef __NT__

#define __WIN16__

#endif

#endif


// Define Windows CE platform indicator

#ifdef WIN32_PLATFORM_HPCPRO

#define __WINCE__

#endif


#if (_WIN32_WCE == 300) // for Pocket PC

#define __POCKETPC__

#define __WINCE__

//#if (_WIN32_WCE == 211) // for Palm-size PC 2.11 (Wyvern)

//#if (_WIN32_WCE == 201) // for Palm-size PC 2.01 (Gryphon)  

//#ifdef WIN32_PLATFORM_HPC2000 // for H/PC 2000 (Galileo)

#endif


查看完整回答
反對 回復 2019-10-04
  • 3 回答
  • 0 關注
  • 732 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號