【问题标题】:How to reinstall gcc and g++ on ubuntu linux如何在 ubuntu linux 上重新安装 gcc 和 g++
【发布时间】:2021-11-26 04:44:25
【问题描述】:

我认为我的 gcc 和 g++ 安装可能有问题,因为下面的代码无法在我的计算机上运行。

#include <iostream>
#include <numbers>

int main()
{
    long double pi {0};
    long double pi2 {0};

    pi  = std::numbers::pi_v<long double>;
    pi2 = std::numbers::pi_v<long double>;

    std::cout << pi << std::endl << pi2;

}

如何在 gcc 和 g++ 上完全重新安装?另外,我如何确保 CodeBlocks 使用的是这个重新安装的版本。

编辑: 运行 g++ 版本 11.1.0 并使用 -std=c++20 这是出现的错误消息:

g++ randomCodeWhileReading.cpp -o -std=c++20
randomCodeWhileReading.cpp: In function ‘int main()’:
randomCodeWhileReading.cpp:9:16: error: ‘std::numbers’ has not been declared
    9 |     pi  = std::numbers::pi_v<long double>;
      |                ^~~~~~~
randomCodeWhileReading.cpp:9:30: error: expected primary-expression before ‘long’
    9 |     pi  = std::numbers::pi_v<long double>;
      |                              ^~~~
randomCodeWhileReading.cpp:10:16: error: ‘std::numbers’ has not been declared
   10 |     pi2 = std::numbers::pi_v<long double>;
      |                ^~~~~~~
randomCodeWhileReading.cpp:10:30: error: expected primary-expression before ‘long’
   10 |     pi2 = std::numbers::pi_v<long double>;
      |                              ^~~~

【问题讨论】:

  • 代码无法运行是什么意思?您是否遇到编译器错误,或者是否存在运行时错误? 非常不太可能您的 GCC 安装有问题,重新安装可以解决。此外,&lt;numbers&gt; 最近才在 C++20 中引入。你的 GCC 版本是否支持 C++20,你是用 -std=c++20 还是 -std=c++2a 编译的?
  • 您能否详细说明什么不完全有效?编译器版本、标准版本标志等也会有所帮助。
  • XY problem 的一个例子:我卧室的窗户打不开,所以我要拆掉重建我的房子;我如何确保我睡在新房子里?并不是解决问题的最佳方法。
  • 请注意,您完全有可能在您的 PC 上需要一个新版本的 GCC,因为您的发行版附带的版本太旧而无法使用,但尽职调查:首先确保。如果您必须更新,请在尝试其他任何操作之前尝试使用 apt 包管理器安装它。

标签: c++ linux ubuntu gcc g++


【解决方案1】:

请:总是在您发布问题时复制/粘贴您的错误消息!

我怀疑这是你得到的编译错误:

x.cpp:2:10: fatal error: numbers: No such file or directory
 #include <numbers>

标头仅在 C++20 后可用: https://en.cppreference.com/w/cpp/numeric

问:你们有兼容 C++20 的 G+ 版本吗?您可以使用g++ --version 来确定这一点

问:您是否为 C++ 20 进行编译(例如 -std=c++20)?

这里是 C++ 20 兼容性的 Gnu C++ 文档:

https://gcc.gnu.org/projects/cxx-status.html

GCC 中的 C++20 支持 GCC 具有对最新版本的实验性支持 2020 年发布的 C++ 标准修订版。

自 GCC 8 起提供 C++20 功能。要启用 C++20 支持,请添加 命令行参数 -std=c++20(在 GCC 9 中使用 -std=c++2a 和 较早)到您的 g++ 命令行。或者,启用 GNU 扩展 除了 C++20 特性,添加 -std=gnu++20。

重要提示:由于 ISO C++20 标准是最新的,GCC 的 支持是实验性的。

【讨论】:

  • @ExZerminator - 问:那为什么你的问题被关闭了?答:因为你应该明确你所说的“有问题”是什么意思!请考虑更新您的帖子 (Edit)。请 1)澄清什么是“错误的”,2)指定您的 G++ 版本。 3)让我们知道您是否解决了问题......以及我的任何回复是否有帮助。
  • 编辑了帖子以包含错误和版本。
  • Libstdc++ manual 可能是另一个值得关注的地方。它提到“数学常数”(表格底部的第三行)是在 10.1 版中首次实现的(但我不清楚这是否应该意味着“完全实现”)。
猜你喜欢
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 2022-07-01
  • 1970-01-01
相关资源
最近更新 更多