使用Visual Studio面向Windows XP开发可采用的最新C++标准是什么
核心问题解答
构建面向Windows XP的二进制文件,不是必须使用UCRT推出之前的VS编译器
UCRT从VS2015开始成为默认CRT,确实不支持Windows XP,但VS2015~VS2019都提供了专门的v140_xp、v141_xp、v142_xp后缀的XP兼容工具集,这类工具集使用兼容XP的旧版CRT,不依赖UCRT,编译生成的二进制可以直接在Windows XP SP3及以上版本运行。VS2022已经正式移除了XP兼容工具集,无法用于XP目标开发。VS2013完全符合面向XP开发、且需要C11支持的需求
VS2013的默认CRT(msvcr120.dll)最低支持Windows XP SP3,对C11常用特性的支持覆盖度超过90%,包括lambda表达式、右值引用、auto类型推导、智能指针、范围for循环等主流特性都可正常使用,仅部分进阶C11特性(如完整constexpr支持、可变参数模板部分场景)存在缺失,完全可以满足绝大多数C11开发需求。
开发注意事项
- 无论使用哪个版本的VS做XP开发,都需要在项目属性的「平台工具集」选项中选择对应支持XP的版本:VS2013直接选默认v120即可,VS2015~VS2019需要选择带
_xp后缀的工具集 - 如果希望生成的二进制不需要用户额外安装VC++运行库,可以将项目属性的「运行库」选项改为
/MT(Release模式)或/MTd(Debug模式),静态链接CRT即可生成单文件可执行程序 - 所有支持XP的VS版本最高仅支持到C14的部分特性,完全不支持C17及更高版本的标准,如果需要使用C++17特性只能放弃XP兼容
内容的提问来源于stack exchange,提问作者Mr.C64
相关产品推荐
相关产品推荐

