作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的项目有两个平台工具集: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
导致 “字符常量中的字符过多” 错误。
有关上下文,请参阅以下类似问题: Visual Studio: how to check used C++ platform toolset programmatically
最佳答案
转到 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。
关于c++ - Visual Studio : How to use platform toolset as preprocessor directive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279157/
我是一名优秀的程序员,十分优秀!