ubuntu - C++20 功能无法运行 Ubuntu 20.04 LTS(三向比较)

标签 ubuntu sublimetext3 c++20

我正在尝试在 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 操作系统上尝试了相同的代码,并且运行良好。我做了一些研究。我发现从 GCC 8 开始就可以使用 C++20 功能。我也检查了我的 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"
} 

这是我的疑问 -

  1. 如何修复无法在 Sublime-Text 中运行的代码?
  2. 如何修复未在终端中运行的代码?

我搜索了修复程序,但我发现的唯一问题是版本太低,显然我的系统不是这种情况。此外,C++17 标准代码运行良好。

编辑1:将g++更改为g++-10,仍然是相同的错误。

编辑2:已修复,由于某种原因<=>被错误地更改为<=>。

最佳答案

您至少需要 GCC 版本 10。 检查编译器支持 https://en.cppreference.com/w/cpp/compiler_support

关于ubuntu - C++20 功能无法运行 Ubuntu 20.04 LTS(三向比较),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71157618/

相关文章:

c++ - fmt::dynamic_format_arg_store 替换/实现 std::format

python - 物理卸载 Python 3.4 以使 pip3 将 "requests"包安装到 Python 3.5,如何解决随之而来的困惑?

c++ - 无法使用 std::end 打印字符串

macos - 程序包控制停止工作

sublimetext3 - 在 Sublime Text 4 中选择或突出显示单词类型或颜色的所有实例

javascript - Sublime 3 JS 片段到 Typescript

c++ - 使用 C++20 概念实现 Pair 概念

c++ - 推导用户定义值模板参数(C++2a,P0732R2)

php - session_start() 使服务器运行完整的执行时间,然后返回数据

python - 无法在 Windows 的 ubuntu 终端上找到一些用于安装 python 的包