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