如何確定VS編譯器版本 MSC VER

2021-06-19 14:53:54 字數 1793 閱讀 7506

如何確定vs編譯器版本

_msc_ver是msvc編譯器的內建巨集,定義了編譯器的版本,_msc_ver 值對應版本關係

msvc++ 11.0 _msc_ver = 1700 (visual studio 2012) 

msvc++ 10.0 _msc_ver = 1600 (visual studio 2010)

msvc++ 9.0 _msc_ver = 1500  (visual studio 2008) 

msvc++ 8.0 _msc_ver = 1400  (visual studio 2005) 

msvc++ 7.1 _msc_ver = 1310  (visual studio 2003)

msvc++ 7.0 _msc_ver = 1300 (visual studio 2002)

msvc++ 6.0 _msc_ver = 1200 

msvc++ 5.0 _msc_ver = 1100

example:

#if (_msc_ver == 1300)  //vc7

#import "acax16enu.tlb" no_implementation raw_inte***ces_only named_guids

#elif (_msc_ver == 1200)  //vc6

#import "acad.tlb" no_implementation raw_inte***ces_only named_guids

#elif (_msc_ver == 1400) //vc8

#import "acax17enu.tlb" no_implementation raw_inte***ces_only named_guids

#elif (_msc_ver == 1500) //vc9

#import "acax18enu.tlb" no_implementation raw_inte***ces_only named_guids

#endif

在程式中加入_msc_ver巨集可以根據編譯器版本讓編譯器選擇性地編譯一段程式。例如乙個版本編譯器產生的lib檔案可能不能被另乙個版

本的編譯器呼叫,那麼在開發應用程式的時候,在該程式的lib呼叫庫中放入多個版本編譯器產生的lib檔案。在程式中加入_msc_ver巨集

,編譯器就能夠在呼叫的時根據其版本自動選擇可以鏈結的lib庫版本,如下所示。

#if _msc_ver >= 1400 // for vc8, or vc9

#ifdef _debug

#pragma comment( lib, "somelib-vc8-d.lib" )

#else if

#pragma comment( lib, "somelib-vc8-r.lib" )

#endif

#else if _msc_ver >= 1310 // for vc71

#ifdef _debug

#pragma comment( lib, "somelib-vc71-d.lib" )

#else if

#pragma comment( lib, "somelib-vc71-r.lib" )

#endif

#else if _msc_ver >=1200 // for vc6

#ifdef _debug

#pragma comment( lib, "somelib-vc6-d.lib" )

#else if

#pragma comment( lib, "somelib-vc6-r.lib" )

#endif

#endif

vs編譯器設定

總結如下。歸根結底還是對vs使用的不熟練。1.在vs2008中 對於某個 檔案,是以c 編譯器編譯,還是以c編譯器編譯 與檔案本身的字尾是.cpp 還是.c無關。主要按優先順序依次取決於以下兩項配置 一是工程本身的編譯器設定,見工程屬性 c c 高階 編譯為 tc或 tp。此時命令列中會出現 tc或...

jdk 編譯器版本比較

jdk 編譯器版本target 引數十六進製制 minor.major十進位制 minor.major jdk1.1.8 不能帶 target 引數 00 03 00 2d 45.3 jdk1.2.2 不帶 預設為 target 1.1 00 03 00 2d 45.3 jdk1.2.2 targe...

編譯器選擇哪個函式版本

對於函式過載,函式模板和函式模板過載,c 需要乙個定義良好的策略,主要以以下步驟執行 第一步 建立候選函式列表。其中包含與被呼叫函式的名稱相同的函式和模板函式。第二步 使用候選函式列表建立可行函式列表。這些都是引數數目正確的函式,為此有乙個臨時轉換序列,其中包括實參型別和相應的形參型別完全匹配的情況...