为什么GCC似乎没有文件系统标准库?

sha*_*dow 11 c++ gcc raspberry-pi gcc6 c++17

我面临文件系统库的问题,它应该包含在c ++ 17编译器中,2天后我试图在raspberry pi中安装gcc-7.0.2但是它没有用,它无法识别命令gcc-7或g ++ - 7甚至-std=c++17所以我必须安装g ++ - 6和gcc-6 apt-get install ,在安装6版之后,编译器包含c ++ 17.我使用代码块作为IDE,我不得不添加一个新的编译器并添加选项-std = c ++ 17来启用它,但在主代码中,当我包含文件系统库时,它没有说这样的文件或目录.

我的问题是,如何才能正确添加c ++ 17编译器及其库(如文件系统)?

Gal*_*lik 29

GCC v7仍然没有实现<文件系统>但它确实有该文件系统技术规范是在<实验/文件系统>

#include <experimental/filesystem>

// for brevity
namespace fs = std::experimental::filesystem;

int main()
{
    fs::path p = "/path/to/my/file"; // etc...
}
Run Code Online (Sandbox Code Playgroud)

这也是可用的GCC v6.

要链接库,需要添加-lstdc++fs到命令行.

注意:当前的技术规范与标准委员会决定的<filesystem>的最终草案之间可能存在一些细微差别.

注2: GCC v8现在使用标志实现<filesystem>-std=c++17.

  • @Galik 为什么到 C++17 发布时 GCC 的功能还不完整?C++17 草案已经功能完备几个月了,如果我正在阅读 [标准化过程](https://www.iso.org/stage-codes.html#40.20),它不会发布到 [10 月 30 日之后的某个时间](https://www.wolframalpha.com/input/?i=2017-06-12+%2B+20+weeks)。这应该是足够的时间,因为他们[完成了核心语言](https://gcc.gnu.org/projects/cxx-status.html#cxx1z) 和[主要完成了库](https: //gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.201z)。 (2认同)
  • @DanielH 根据记录,“std::filesystem”直到“v8.1”才到达“GCC”,该“v8.1”于“2018 年 5 月”发布,这是“C++17 标准”之后*超过 6 个月* ` 已发表。即使如此,直到“GCC v9.1”于“2019 年 5 月”发布之前,它仍被认为是“实验性的”*。 (2认同)

Miz*_*zux 5

首先你应该看看GCC 中的 C++17 支持

海湾合作委员会8

运行时库 (libstdc++)

  • 改进了对 C++17 的实验支持,包括以下功能:
    • 推导指南支持类模板参数推导。
    • std::filesystem执行。
    • std::char_traits<char>std::char_traits<wchar_t>可用于常量表达式。
    • std::to_charsstd::from_chars(仅适用于整数,不适用于浮点类型)。

源代码: https: //gcc.gnu.org/gcc-8/changes.html

海湾合作委员会9

运行时库 (libstdc++)

  • 改进了对 C++17 的支持,包括:
    • C++17 实现不再是实验性的。
    • 并行算法和<execution>(需要 Thread Building Blocks 2018 或更高版本)。
    • <memory_resource>
    • 使用 中的类型和函数<filesystem>不需要与-lstdc++fsnow 链接。

源代码: https: //gcc.gnu.org/gcc-9/changes.html