1. 程式人生 > >_MSC_VER[Microsoft C/C++編譯器版本預定義巨集]

_MSC_VER[Microsoft C/C++編譯器版本預定義巨集]

_MSC_VER是Microsoft C/C++編譯器版本預定義巨集。

_MSC_VER可以分解為:
MS:Microsoft的簡寫。
C:MSC就是Microsoft的C/C++編譯器。
VER:Version的簡寫。

_MSC_VER的意思就是:Microsoft的C/C++編譯器版本預定義巨集。

百度百科

_MSC_VER是微軟公司推出的C/C++編譯器在ANSI/ISO C99標準之外擴充套件的巨集定義,用來定義當前微軟公司自己的編譯器的主版本。需要注意的是,這並不是Visual Studio 的版本號,也不是Visual C++的版本號。如Visual Studio 2005的Vistual C++版本為8.0,所附帶編譯器的_MSC_VER定義是1400;目前最新的Visual Studio 2015的Visual C++版本為14.0,相應_MSC_VER為1900。[1]
外文名
_MSC_VER
分    類
定義編譯器的版本
用    途
編輯器
屬    性
軟體

目錄

  1. 1編譯器
  2. 2編譯程式

編譯器

編輯 _MSC_VER 定義編譯器的版本。下面是一些編譯器版本的_MSC_VER值(參見擴充套件閱讀中的參考文獻2的連結) MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015) MS VC++ 12.0 _MSC_VER = 1800 (VisualStudio 2013) MS VC++ 11.0 _MSC_VER = 1700 (VisualStudio 2012) MS VC++ 10.0 _MSC_VER = 1600(VisualStudio 2010) MS VC++ 9.0 _MSC_VER = 1500(VisualStudio 2008) MS VC++ 8.0 _MSC_VER = 1400(VisualStudio 2005) MS VC++ 7.1 _MSC_VER = 1310(VisualStudio 2003) MS VC++ 7.0 _MSC_VER = 1300(VisualStudio .NET) MS VC++ 6.0 _MSC_VER = 1200(VisualStudio 98) MS VC++ 5.0 _MSC_VER = 1100(VisualStudio 97) 其中MS VC++ 14.0表示Visual C++的版本為14.0,後面括號中的Visual Studio 2015,表明該VC++包含在微軟開發工具Visual Studio 2015中。 另外,可以通過當前使用的MS VC++
編譯器
的版本資訊來推斷當前編譯器預定義的 _MSC_VER 值。_MSC_VER 的值是由 MS VC++編譯器的主版本號和次版本號構成的,其中主版本號是以“.”分割的版本號資訊中的第一部分,而次版本號為其中的第二部分。例如,假設當前那使用的Visual C ++編譯器的版本號是15.00.20706.01(MS VC++ 2008),那麼其主版本號就是為“15”,而次版本號就是為“00”,因此當前編譯器預定義的 _MSC_VER 巨集的值就為1500。 關於編譯器版本號的檢視,需要說名的是:這裡的版本號並不是指在“Microsoft Visual Studio——Help——About”裡的“Version”的值,這個版本號是指Visual Studio的版本號,而不是VC++編譯器的版本號,VC++編譯器在Visual Studio裡面是指“
cl.exe
”程式,該程式才是編譯C++程式碼的真正編譯器,如檢視“cl.exe”的版本號,以在WIndows 7檢視VC 2005的“cl.exe”的版本號為例,“開始——所有程式——Microsoft Visual Studio 2005——Visual Studio Tools——Visual Studio 2005 Command Prompt”進入VC++ 2005命令列,執行“cl /?”,將會看到如下的資訊: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. vc++ command linevc++ command line cl.exe versioncl.exe version 其中的“14.00.50727.762”就是版本號,對應的的_MSC_VER的值就是1400(14.00.50727.762的四部分依次為:主版本號、次版本號、生成版本號和修訂號,其中還有兩個相關巨集_MSC_FULL_VER:值為140050727,_MSC_BUILD:值為762)。

編譯程式

編輯 在程式中加入_MSC_VER巨集可以根據編譯器版本讓編譯器選擇性地編譯一段程式。例如一個版本編譯器產生的lib檔案可能不能被另一個版本的編譯器呼叫,那麼在開發應用程式的時候,在該程式的lib呼叫庫中放入多個版本編譯器產生的lib檔案。在程式中加入_MSC_VER巨集,編譯器就能夠在呼叫的時根據其版本自動選擇可以連結的lib庫版本,如下所示。 #if _MSC_VER >= 1400 // for vc8, or vc9 #pragma comment( lib, "SomeLib-vc8-d.lib" ) #elif #pragma comment( lib, "SomeLib-vc8-r.lib" ) #elif _MSC_VER >= 1310 // for vc71 #pragma comment( lib, "SomeLib-vc71-d.lib" ) #elif #pragma comment( lib, "SomeLib-vc71-r.lib" ) #elif _MSC_VER >=1200 // for vc6 #ifdef _DEBUG #pragma comment( lib, "SomeLib-vc6-d.lib" ) #elif #pragma comment( lib, "SomeLib-vc6-r.lib" ) #endif #endif 本編輯詞條參考自擴充套件閱讀中的連結。關於_MSC_VER更詳細的說明請點選閱讀擴充套件閱讀中的參考文獻3,4的連結。
參考資料
Predefined Macros

_MSC_VER Defined as an integer literal that encodes the major and minor number elements of the compiler's version number. The major number is the first element of the period-delimited version number and the minor number is the second element. For example, if the version number of the Visual C++ compiler is 17.00.51106.1, the _MSC_VER macro evaluates to 1700. Enter cl /? at the command line to view the compiler's version number. This macro is always defined.