2010-06-14 24 views
1

是否有(微軟專用的)CPP宏來確定我在Visual Studio 2010中使用VC9編譯器而不是Visual Studio 2008? _MSC_VER返回編譯器版本,所以藉助VS2010多重定位功能,我將得到與VS2008相同的結果。確定何時在VS2010中使用VC90編譯器而不是VS2008?

想知道差異的原因是我創建了一個新的VS2010項目,其中包含從較大項目中刪除的代碼。我剛剛離開了VS2008的東西,因爲我們很快就要離開VS2008,而且我不想經過創建vcproj文件以及新的vcxproj的麻煩。現在,我已經定義了我自己的宏來指示代碼是否被編譯到它自己的DLL中,或者不是;它工作得很好,但如果稍微優雅些,它會很好。

+0

快速測試表明,如果將平臺工具集更改爲** v90 **,則「_MSC_VER」爲「1500」,這是正確的;你沒有看到相同的結果嗎? – 2010-06-14 21:14:16

+2

編譯器本身顯然不知道差別 - 它是同一個編譯器 - 所以你需要一些從外部傳遞給VC9的信息。因此,您的/ D解決方案與任何解決方案一樣優雅。 – MSalters 2010-06-15 09:22:31

回答

0

似乎沒有解決方案,即使它不像我想要的那麼優雅,自定義宏仍然有效。

1

_MSC_VER返回編譯器版本

聽起來好像這是你真的想要的東西(或我誤解?)。

如果正在使用來自VS2008的編譯器(它也被稱爲VC9或cl.exe 15.0),則_MSC_VER將返回大於或等於1500的值。如果使用VS2010的編譯器(也是稱爲VC10或cl.exe 16.0),那麼_MSV_VER將評估爲1600.

+0

@詹姆斯 - 我明白了。我必須檢查一下;如果是這樣的話,這聽起來像是一個應該提交給MS的錯誤。 – 2010-06-14 21:13:45

+0

我想知道哪個IDE(VS2008或VS2010 w/multi-targeting)我正在使用VC9編譯器;和不必定義我自己的宏。 – 2010-06-15 17:47:00

+0

@丹 - 我明白了。你能否詳細說明爲什麼你想知道哪個IDE正在開發中?我對理解動機很好奇。 – 2010-06-15 19:24:41

相關問題