gpt4 book ai didi

c++ - Visual Studio : How to use platform toolset as preprocessor directive?

转载 作者:可可西里 更新时间:2023-11-01 17:38:05 25 4
gpt4 key购买 nike

我的项目有两个平台工具集: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com