簡體   English   中英

Visual Studio:如何使用平台工具集作為預處理器指令?

[英]Visual Studio: How to use platform toolset as preprocessor directive?

我有兩個平台工具集:v110和v110_xp用於我的項目,並且根據所選平台,我想要包含/排除要編譯的部分代碼。

_MSC_FULL_VER$(PlatformToolsetVersion)對於這兩個平台工具集具有完全相同的值。 或者,我嘗試使用$(PlatformToolset) ,如下所示:

_MSC_PLATFORM_TOOLSET=$(PlatformToolset)

但問題是$(PlatformToolset)是非數字的。 想知道如何將這個非數字值用作預處理程序指令?

嘗試了幾種解決方案,我發現了這一點

_MSC_PLATFORM_TOOLSET='$(PlatformToolset)'

然后

#if (_MSC_PLATFORM_TOOLSET=='v110')
  [Something]
#endif

工作正常但是

#if(_MSC_PLATFORM_TOOLSET == 'v110_xp')
  [SomethingElse]
#endif

error. 導致錯誤。

有關上下文,請參閱此類似問題: Visual Studio:如何以編程方式檢查已使用的C ++平台工具集

轉到project properties -> C/C++ -> Preprocessor並將以下內容添加到Preprocessor Definitions

_MSC_PLATFORM_TOOLSET_$(PlatformToolset)

然后你可以這樣寫:

#ifdef _MSC_PLATFORM_TOOLSET_v110
   [Something]
#endif

#ifdef _MSC_PLATFORM_TOOLSET_v110_xp
   [SomethingElse]
#endif

這在VS2010中適用於我。

對於VS 2012/2013,如果使用向后兼容性工具集,則可以使用_USING_V110_SDK71_ 無論平台工具集名稱是v120_xp,VS2013都將定義相同的名稱。

#if (_MSC_VER >= 1700) && defined(_USING_V110_SDK71_)
    // working in XP-compatibility mode
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM