g++ 版本标志未正确切换 c++ 版本

问题描述 投票:0回答:1

我过去通常使用c++11,并使用“-std=c++11”标志进行手动编译和生成文件来执行此操作。现在我想使用文件系统库,它需要 c++17 或更高版本。 根据我的理解,这不应该是一个问题,因为我的 g++ 版本是 11.4.0。

我尝试将 make 文件中的标志更改为“-std=c++17”,但这不起作用,因为我收到了有关“文件系统未命名类型”的编译错误以及对 c++11 的一些路径引用。然后我手动尝试,得到了同样的结果。

这是 (wsl) 终端命令和下面的(开始)结果:

g++ -std=c++17 fstesting.cc

fstesting.cc:3:17:错误:命名空间“std”中的“文件系统”没有
命名一个类型
3 |使用 fs = std::filesystem;
| ^~~~~~~~~~
在 /usr/include/c++/11/bits/fs_fwd.h:37 包含的文件中,
来自 /usr/include/c++/11/filesystem:44,
来自 fstesting.cc:1:

(格式不太正确,但你明白了)

什么给予?

c++11 compiler-errors c++17 g++
1个回答
0
投票

您正在尝试使用

std::filesystem
作为类型。它不是类型,而是命名空间。您可能需要“使用命名空间”声明。

© www.soinside.com 2019 - 2024. All rights reserved.