GCC 4.8: 支持 C++11 (部分)
GCC 4.9: 支持 C++11 和 C++14 (部分)
GCC 5: 完全支持 C++14
GCC 6: 支持 C++14 和 C++17 (部分)
GCC 7: 支持 C++17 (大部分)
GCC 8: 完全支持 C++17,部分支持 C++20
GCC 9: 支持更多的 C++20 特性
GCC 10: 支持大部分 C++20 特性
GCC 11: 更全面地支持 C++20
GCC 12: 支持几乎所有的 C++20 特性
GCC 13 及以后: 增加对 C++20 的完全支持并开始对 C++23 进行支持
如果您发现您并未配置好您的C++,或者说您觉得当前的版本不能支撑日常的学习,那么您需要下载一个
https://github.com/niXman/mingw-builds-binaries/releases
下载之后,解压到一个你知道的文件夹中,打开解压的文件路径,发现有一个bin文件打开他之后,复制上方的文件路径测试一下 g++ 的版本。
环境的配置
工具(tools)— > 编译系统 -----> 新建编译系统… ,将会生成一个*.sublime-build文件,在其中配置C++的JSON文件,当然你也可以修改本身就有的编译文件。
把下列代码复制到上面提到的那个文件中,保存,再次选中刚刚编辑的JSON文件就能编译C++了。
{ "shell_cmd": "g++ -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$","working_dir": "${file_path}", "selector": "source.c++", "encoding": "gbk",
}
基础配置法
默认情况下,g++ 编译器通常不会使用最新的 C++ 标准,而是使用一个稳定的默认标准(通常是一个较旧的标准,如 C++14 或 C++17),以确保与旧代码的兼容性。因此,如果你不显式指定 -std=c++20 或 -std=c++23,编译器可能会使用较旧的标准进行编译,这会导致使用新标准中的特性时出现错误。
所以,如果我们想使用最新的编译方式,我们必须要参考上文,我们的编译器最大支持的C++版本,从而更新我们的JSON文件,达到使用最新版本的C++进行编译。
具体更改只有一行代码
{ "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$","working_dir": "${file_path}", "selector": "source.c++", "encoding": "gbk",
}
深入解析
{ "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"", //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。 "working_dir": "${file_path}", // working_dir 编译的工作区"selector": "source.c++", // 对象"encoding": "gbk", // encoding 编码 : 选择 gbk(国标:包含所有的汉字) "variants": [ { "name": "Single File Build", // 只编译 "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\"" }, { "name": "Single File Run", //只运行"shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\"" }, { "name": "Single File Build & Run", // 编译加运行 "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"" }, // 下面为多文件编译 , 请勿使用 。{ "name": "Multiple Files Build", "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\"" }, { "name": "Multiple Files Run", "shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\"" }, { "name": "Multiple Files Build & Run", "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"" } ] }