c++常用的编译场景一般是linux或windows,linux通常使用Mingw中的gcc/g++编译器,Windows通常使用visual studio IDE中的微软编译器,随着c++11及以上标准的普及,再编译器遇到这些新特性的时候,如果编译器版本过低,那么会出现编译失败的情况,虽然在日常学习中通常都会下载和使用高版本的编译器,但是在工作中,如果遇到一些特殊行业只能使用特定版本编译器,或者需要对一些压箱底的老项目进行编译,选择合适的编译器版本就很重要。
GCC和Visual Studio(VS)是两个广泛使用的C++编译器,它们支持不同的C++标准版本。以下介绍它们与C++标准版本的对应关系:
在选择编译器版本时,需要考虑项目所需的C++标准以及编译器对新特性的支持情况。例如,如果项目需要使用C++17的特性,那么至少需要使用GCC 11.3或Visual Studio 2017 RTW及以上版本。如果项目需要使用C++20的特性,可能需要使用更新的编译器版本,因为GCC直到8.0版本才开始支持C++20的部分特性,而完全支持可能需要等待更高版本的GCC或使用Visual Studio的最新版本 38。
一.GCC编译器与C++标准对应关系
- GCC 13.1(2023年4月26日发布)默认支持C17和C++17标准 3。
- GCC 12.2(2022年8月19日发布)默认支持C17和C++17标准 3。
- GCC 11.3(2022年4月21日发布)默认支持C17和C++17标准 3。
- GCC 10.4(2022年6月28日发布)默认支持C17和C++14标准 3。
- 更早的GCC版本支持的C++标准通常较旧,例如GCC 7.5(2019年11月14日发布)默认支持C11和C++14标准 3。
二.Visual Studio编译器与C++标准对应关系
- Visual Studio 2022 RTW(17.0版本)的MSVC版本为14.30,对应编译器版本为19.30 2。
- Visual Studio 2019 RTW(16.0版本)的MSVC版本为14.20,对应编译器版本为19.20 2。
- Visual Studio 2017 RTW(15.0版本)的MSVC版本为14.1,对应编译器版本为19.10 2。
- 这些版本通常支持C++17和C++14标准,具体支持哪些特性取决于具体的版本和更新 2。