有没有办法使用预处理器标志或任何其他方式获取 Visual Studio 使用的构建工具版本,以便代码/编译器可以在编译时决定如何编译代码?
使用构建工具 v140 与 v143 时,头文件/代码存在一些差异,但是为了使其与两个版本的构建工具兼容,我想使用 #ifdef< 封装一些代码
或类似的东西,这样它就可以使用任一版本进行构建,而无需对代码进行任何更改并保持向后兼容。
最佳答案
是的,您可以将以下内容添加到预处理器定义中:
MSC_PLATFORM_TOOLSET_$(PlatformToolset);
然后像这样使用它:
#ifdef MSC_PLATFORM_TOOLSET_v140
或 #if 已定义 ( MSC_PLATFORM_TOOLSET_v140 )
例如:
#if defined ( MSC_PLATFORM_TOOLSET_v140 )
// Do something
#elif defined ( MSC_PLATFORM_TOOLSET_v143 ) // VS2022 Toolset
// Do something else
#endif
关于c++ - 在编译时检测 Visual Studio 构建工具版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75814321/