为什么GCC好像没有文件系统标准库?

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

我面临文件系统库的问题,它应该包含在 c++17 编译器中,两天后我尝试在树莓派中安装 gcc-7.0.2 但它不起作用,它无法识别命令 gcc-7 或 g++-7 甚至

-std=c++17
所以我必须使用
apt-get install
安装 g++-6 和 gcc-6 无论如何,安装 6 版本后,编译器包含 c++17。 我使用代码块作为 IDE,我必须添加一个新的编译器并添加选项 -std=c++17 来启用它,但在主代码中,当我包含文件系统库时,它说没有这样的文件或目录。

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

c++ gcc raspberry-pi c++17 gcc6
2个回答
74
投票

GCC v7
仍然没有实现,但它确实有中的文件系统技术规范

#include <experimental/filesystem>

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

int main()
{
    fs::path p = "/path/to/my/file"; // etc...
}

这也可以在

GCC v6
中找到。

要与库链接,您需要将

-lstdc++fs
添加到命令行。

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

注 2:

GCC v8
现在使用 -std=c++17 标志实现


5
投票

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

海湾合作委员会8

运行时库(libstdc++)

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

src:https://gcc.gnu.org/gcc-8/changes.html#libstdcxx

海湾合作委员会9

运行时库(libstdc++)

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

src:https://gcc.gnu.org/gcc-9/changes.html#libstdcxx

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.