如何在 gcc 8 上使用 std::filesystem?

Nav*_*een 14 c++ gcc namespaces

我已经更新了 gcc 的版本,gcc --version 产生以下输出

    gcc (Ubuntu 8.1.0-5ubuntu1~16.04) 8.1.0
Copyright (C) 2018 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.
Run Code Online (Sandbox Code Playgroud)

我可以在头文件中包含文件系统而没有任何错误

#include<filesystem>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问如下所示的命名空间文件系统时,我收到错误消息

namespace fs = std::filesystem;
Run Code Online (Sandbox Code Playgroud)

错误信息

error: ‘filesystem’ is not a namespace-name
 namespace fs = std::filesystem;
Run Code Online (Sandbox Code Playgroud)

这似乎很奇怪,因为 gcc 8 支持 std::filesystem 并且它在命名空间中不可用,我在访问 std::filesystem 时做错了什么吗?

是的,我用 -std=c++17 构建

Ted*_*gmo 19

将文件系统库作为参数添加到编译器,该编译器将转发到链接器。还要确保您使用的是 C++17。g++ 和 clang++ 都接受这种特殊格式:

--std=c++17 -lstdc++fs
Run Code Online (Sandbox Code Playgroud)


小智 8

由于愚蠢的代表系统,我不能对 slashmais 的回答发表评论。

使用 IDE 时,请确保您还将编译器设置为 GCC8 或更高版本。

就我而言,尽管已安装,但 CodeLite 使用的是较低版本的 GCC 并导致头痛(re:找不到标题)!

手动设置要使用的 CodeLite gcc-8(而不是仅仅gcc解决这个问题。

  • 致力于缩短我们都讨厌的令人痛苦的低于 100 的瞬态周期。;) (4认同)