hag*_*agh 8 c++ project-properties preprocessor-directive visual-studio-2012
我有两个平台工具集:v110和v110_xp用于我的项目,并且根据所选平台,我想要包含/排除要编译的部分代码.
_MSC_FULL_VER并且$(PlatformToolsetVersion)对于这两个平台工具集具有完全相同的值.或者,我尝试使用$(PlatformToolset)如下:
_MSC_PLATFORM_TOOLSET=$(PlatformToolset)
Run Code Online (Sandbox Code Playgroud)
但问题是这$(PlatformToolset)是非数字的.想知道如何将这个非数字值用作预处理程序指令?
尝试了几种解决方案,我发现了这一点
_MSC_PLATFORM_TOOLSET='$(PlatformToolset)'
Run Code Online (Sandbox Code Playgroud)
然后
#if (_MSC_PLATFORM_TOOLSET=='v110')
[Something]
#endif
Run Code Online (Sandbox Code Playgroud)
工作正常但是
#if(_MSC_PLATFORM_TOOLSET == 'v110_xp')
[SomethingElse]
#endif
Run Code Online (Sandbox Code Playgroud)
导致"字符常量中的字符太多"错误.
有关上下文,请参阅此类似问题: 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
Run Code Online (Sandbox Code Playgroud)
这在VS2010中适用于我.
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |