【发布时间】:2021-06-05 17:26:11
【问题描述】:
我正在使用 sublime text 来编译和运行 c++ 文件。但是当我尝试使用“-std=c++17”编译构建时,崇高的文本无法识别 C++17。我用崇高的文字制作了以下构建系统:
{
"cmd": ["g++.exe", "-std=c++17", "${file}",
"-o", "${file_base_name}.exe",
"&&", "${file_base_name}.exe<inputf.in>outputf.out"],
"shell":true,
"working_dir":"$file_path",
"selector":"source.cpp"
}
当我使用上面的构建系统编译任何 cpp 文件时,以下错误消息会以 sublime 文本显示:
cc1plus.exe: error: unrecognized command line option "-std=c++17"
[Finished in 177ms]
我已检查并确保它仅从命令提示符获取 GCC-6.3.0。
Microsoft Windows [Version 10.0.19042.985]
(c) Microsoft Corporation. All rights reserved.
C:\Users\hp>g++ --version
g++ (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
我尝试使用“-std=c++1z”而不是“-std=c++17”,但这也无济于事。
有趣的是,当我在命令提示符下直接使用 g++ 命令时,我可以使用“-std=c++17”来运行它。使用“-std=c++17”从命令提示符编译 C++ 文件时没有任何问题。当我使用命令提示符时,以下命令工作正常:
g++.exe -std=c++17 ystest.cpp
【问题讨论】:
-
尝试将
"--version"添加到构建系统配置中,以仔细检查 Sublime 选择的版本。它可能与您在命令行中看到的不同。 -
好吧,GCC 6 只支持少数 C++17 特性。所以无论如何我都不确定目标是什么。
-
您正在升级到 GCC 6.3,已经 5 年了,所以我想知道您之前使用的是什么版本。为什么不升级到最新的 GCC 版本,例如 9 或 10?
标签: c++ c++17 sublimetext3 mingw