我有两个平台工具集: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
在字符常量中使用太多字符会导致"too many character in character constant"错误。
有关上下文,请参见类似的问题: Visual Studio:如何以编程方式检查使用的C++平台工具集。