C++20 功能不工作 Ubuntu 20.04 LTS(三向比较)
C++20 feature not working Ubuntu 20.04 LTS (three-way comparison)
我正在尝试 运行 Ubuntu 20.4 LTS 上 Sublime-Text 上的以下代码片段。
#include <iostream>
int main(){
auto result = (10 <=> 5) > 0;
std::cout << result << std::endl;
return 0;
}
但这会导致
ModernC++.cpp: In function ‘int main()’:
ModernC++.cpp:3:22: error: expected primary-expression before ‘>’ token
3 | auto result = (10 <=> 5) > 0;
| ^
[Finished in 271ms with exit code 1]
[cmd: ['g++ -std=c++2a ModernC++.cpp -o ModernC++ && timeout 7s ./ModernC++<input.txt>output.txt']]
[dir: /home/parth/.config/sublime-text/Packages/User]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]
我也试过运行直接从终端使用以下命令
g++ ModernC++.cpp -std=c++2a -o ModernC++
但这会导致
ModernC++.cpp: In function ‘int main()’:
ModernC++.cpp:3:22: error: expected primary-expression before ‘>’ token
3 | auto result = (10 <=> 5) > 0;
我已经在我的 Windows 10 OS 上尝试了相同的代码,并且在那里工作正常。我做了一些研究。我发现 C++20 特性从 GCC 8 开始可用。我也检查了我的 G++ 版本。
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 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.
所以我认为版本不是问题。如果有人也可以告诉我其中的错误,这也是 sublime 的构建系统文件。
{
"cmd" : ["g++ -std=c++2a $file_name -o $file_base_name && timeout 7s ./$file_base_name<input.txt>output.txt"],
"selector" : "source.cpp",
"shell":true,
"working_dir" : "$file_path"
}
所以这是我的查询 -
- 如何修复代码在 Sublime-Text 中不 运行ning?
- 如何修复终端中的代码不 运行ning?
我搜索了修复程序,但我发现的唯一问题是版本太低,显然我的系统不是这种情况。此外,C++17 标准代码工作正常。
编辑 1:将 g++ 更改为 g++-10,仍然是同样的错误。
编辑 2:已修复,<=> 由于某种原因被错误地更改为 <=>。
您至少需要 GCC 版本 10。
检查编译器支持
https://en.cppreference.com/w/cpp/compiler_support
我正在尝试 运行 Ubuntu 20.4 LTS 上 Sublime-Text 上的以下代码片段。
#include <iostream>
int main(){
auto result = (10 <=> 5) > 0;
std::cout << result << std::endl;
return 0;
}
但这会导致
ModernC++.cpp: In function ‘int main()’:
ModernC++.cpp:3:22: error: expected primary-expression before ‘>’ token
3 | auto result = (10 <=> 5) > 0;
| ^
[Finished in 271ms with exit code 1]
[cmd: ['g++ -std=c++2a ModernC++.cpp -o ModernC++ && timeout 7s ./ModernC++<input.txt>output.txt']]
[dir: /home/parth/.config/sublime-text/Packages/User]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]
我也试过运行直接从终端使用以下命令
g++ ModernC++.cpp -std=c++2a -o ModernC++
但这会导致
ModernC++.cpp: In function ‘int main()’:
ModernC++.cpp:3:22: error: expected primary-expression before ‘>’ token
3 | auto result = (10 <=> 5) > 0;
我已经在我的 Windows 10 OS 上尝试了相同的代码,并且在那里工作正常。我做了一些研究。我发现 C++20 特性从 GCC 8 开始可用。我也检查了我的 G++ 版本。
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 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.
所以我认为版本不是问题。如果有人也可以告诉我其中的错误,这也是 sublime 的构建系统文件。
{
"cmd" : ["g++ -std=c++2a $file_name -o $file_base_name && timeout 7s ./$file_base_name<input.txt>output.txt"],
"selector" : "source.cpp",
"shell":true,
"working_dir" : "$file_path"
}
所以这是我的查询 -
- 如何修复代码在 Sublime-Text 中不 运行ning?
- 如何修复终端中的代码不 运行ning?
我搜索了修复程序,但我发现的唯一问题是版本太低,显然我的系统不是这种情况。此外,C++17 标准代码工作正常。
编辑 1:将 g++ 更改为 g++-10,仍然是同样的错误。
编辑 2:已修复,<=> 由于某种原因被错误地更改为 <=>。
您至少需要 GCC 版本 10。 检查编译器支持 https://en.cppreference.com/w/cpp/compiler_support