繁体   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