如何確定VS編譯器版本--_MSC_VER || #if _MSC_VER 1000 #pragma once #endif

如何確定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??(Visual Studio 2002)?
? ? #import "acax16ENU.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1200)? //vc6
? ? #import "acad.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1400) //vc8??(Visual Studio 2005) ?
? ? #import "acax17ENU.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1500) //vc9 ?(Visual Studio 2008) ?
? ? #import "acax18ENU.tlb" no_implementation raw_interfaces_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


==================================================================================================================

#if _MSC_VER > 1000

#pragma once

#endif

解釋:

這是微軟的預編譯控制。
在_MSC_VER較小時,它對一些東西的支持與新版不同


_MSC_VER分解如下:

MS:Microsoft(微軟)的簡寫

C:MSC就是Microsoft出的C編譯器。

VER:Version(版本)的簡寫。

全部加在一起就是:Microsoft的C編譯器的版本


#pragma once???

指示這個文件在編譯時只被編譯器包括一次!一般用到.h中防止文件被重復包括!???


#if _MSC_VER > 1000?

是指如果vc編譯器的版本大于1000則這個語句被編譯!大概小于1000的版本不支持#pragma

once這個語句

?

很多頭文件中有

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

_MSC_VER 定義編譯器的版本,VC++6.0就是1200??
#if?? _MSC_VER?? >?? 1000的意思就是如果編譯器版本高于1000(VC++5.0)


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458508.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NIO復習02

Selector 1. Selector(選擇器)是Java NIO中能夠檢測一到多個NIO通道,并能夠知曉通道是否為諸如讀寫事件做好準備的組件。這樣,一個單獨的線程可以管理多個channel,從而管理多個網絡連接。 2. Selector的創建&#xff1…

c/c++標準預定義宏

C標準中的一些預定義宏昨天寫代碼時需要在代碼獲取當前編譯時間,從而可動態地作為版本信息,因此用到了C標準中的一些預定義的宏。在此將C標準中定義的幾個宏一并總結一下: __DATE__ 進行預處理的日期(“Mmm dd yyyy”形式的字符串…

安裝cocoa pods時出現Operation not permitted - /usr/bin/xcodeproj的問題

在更新完ruby,更換Ruby鏡像--淘寶的那個鏡像(https://ruby.taobao.org/ )已經不可用了。官方的需要FQ。所以我們現在用最新支持的ruby鏡像(https://gems.ruby-china.org/) 安裝cocoa pods時, 在命令行中輸入: 安裝&…

js 日期控件laydate使用

官網 http://sentsin.com/layui/laydate/ 1. 下載官網上的壓縮包,解壓后只需要復制laydate 文件夾到你的項目中; 2. 在頁面引入 <script type"text/javascript" src"js/laydate/laydate.js"></script> 3. 在頁面添加: <div class"i…

老李推薦:第8章2節《MonkeyRunner源碼剖析》MonkeyRunner啟動運行過程-解析處理命令行參數 2...

我們這一節會先去分析下monkeyrunner是如何對參數進行處理的&#xff0c;我們跳轉到MonkeyRunnerOptions這個類里面的processOptions這個方法&#xff1a; 93 public static MonkeyRunnerOptions processOptions(String[] args) 94 { 95 int index 0; 96 97 Strin…

MFC CPropertySheet 多頁面切換 實例

為了能實現在同一個頁面實現多個頁面的切換效果。CPropertySheet要與CPropertyPage一起使用。 首先 新建一個MFC工程--MFC AppWizard(exe), 取名Pagesheet, 選擇Dialog based, 然后Finish. 2. 在對話框資源中插入兩個對話框IDD_DIALOG1、IDD_DIALOG2&#xff0c;作為…

ReactiveCocoa簡單介紹

ReactiveCocoa 的簡單介紹 http://www.jianshu.com/p/87ef6720a096

游戲提高性能 游戲降幀處理

什么是降幀&為什么降幀 一般情況下我們為了提高整個游戲的體驗&#xff0c;所以我們一般會將游戲的幀數&#xff08;每秒鐘刷新多少次&#xff09;設置的比較高。一般情況下&#xff0c;我們的游戲所有的代碼都是一幀執行一次。為了讓每一幀都變成真的關鍵數據幀。不過&…

delphi 更改DBGrid 顏色技巧

1、根據條件更改某一單元格的顏色 [delphi] view plaincopy procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DM.FirstListStatus.AsString生產 then begin …

mfc中UpdateData的用法

http://blog.csdn.net/ddjj_1980/article/details/51452289 UpdateData(TRUE)——刷新控件的值到對應的變量。(外部輸入值交給內部變量)即&#xff1a;控件的值—>變量。UpdateData(FALSE)—— 拷貝變量值到控件顯示。(變量的最終運算結果值交給外部輸出顯示)即&#xff1a;…

動畫類的層次結構

CASpringAnimation類是CAABasicAnimation的子類 CAPropertyAnimation &#xff1a;是CAAnimation的子類&#xff0c;它支持動畫地顯示圖層的keyPath&#xff0c;一般不直接使用。 iOS9.0之后新增CASpringAnimation類&#xff0c;它實現彈簧效果的動畫&#xff0c;是CABasicAnim…

[原]小命令大作用:modprobe

調整網絡為綁定模式&#xff0c;但啟動時候會報錯&#xff0c;此時執行命令 modprobe bonding 可以解決問題。 之前在磁盤方面遇到問題也是通過modprobe命令解決的&#xff0c;又遇到這個命令&#xff0c;似曾相識。于是看下該命令&#xff1a; Linux命令&#xff1a;modprobe …

sql語句優化之not in

多表關聯想查a表中除去b表的可用not exists 效率比not in 更高 優化后的語句用時0.421秒 select john.*, (case when round((case john.sumcount when 0 then 0 else mycount * 100 / sumcount end), 2) > 100 then 100 else round((case john.sumcount when 0 then 0 else …

setup2go制作安裝程序

QT程序設計完畢時&#xff0c;我們就要發布自己的程序&#xff0c;發布程序有兩種方法&#xff1a;一是靜態編譯&#xff0c;二是制作程序安裝包。 靜態編譯好麻煩&#xff0c;我從來沒有成功過&#xff0c;所以我用了動態編譯方法&#xff0c;設計完成時&#xff0c;用release…

gson-2.2.api簡單

使用gson的tojson和fromjson實現對象和json的轉換 Gson gson new Gson(); // Or use new GsonBuilder().create(); MyType target new MyType(); String json gson.toJson(target); // serializes target to Json MyType target2 gson.fromJson(json, MyType.c…

用戶需求、己、競爭對手的關系

圖一 圖二 圖三 如第一圖所示&#xff1a;現在在市面上的產品基本上都可以歸納為這一方面&#xff0c; 如“用戶需求”是網上購物的需求&#xff0c;以“己”是京東為例子&#xff0c;“己”的…

SharePoint 入門介紹

from&#xff1a;http://www.cnblogs.com/jianyus/archive/2013/01/11/2856963.html 前言&#xff1a;接觸SharePoint兩年有余&#xff0c;從一開始的小白&#xff0c;變成現在的菜鳥&#xff0c;一路走來&#xff0c;學到很多&#xff0c;現在&#xff0c;想把自己知道的東西&…

AJAX-服務器響應

服務器響應 如需獲得來自服務器的響應&#xff0c;請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。 屬性 描述 responseText 獲得字符串形式的響應數據。 responseXML 獲得 XML 形式的響應數據。 responseText 屬性 如果來自服務器的響應并非 XML&#xff0c…

c#下不同命名空間的引用(一個project使用另外一個project的名稱空間)

http://bbs.csdn.net/topics/300089064 兩個命名空間在同一個項目中時&#xff0c;沒有任何問題。 若兩個命名空間不在同一個項目中&#xff0c;則變成兩個程序集之間的互相引用。 程序集之間的引用無所謂循環不循環的問題。 但如果兩個程序集要互相引用&#xff0c;并且兩個…

數據結構比較型排序算法分析及選擇

比較型算法分為五類&#xff1a; 1、插入排序&#xff1a;直接插入排序、折半插入排序、希爾排序&#xff1b; 2、選擇排序&#xff1a;直接選擇排序、堆排序&#xff1b; 3、交換排序&#xff1a;快速排序、冒泡排序&#xff1b; 4、歸并排序&#xff1b; 5、基數排序&#xf…