我面临文件系统库的问题,它应该包含在 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 编译器及其库(如文件系统)??
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
首先你应该看看 GCC 中的 C++17 支持
运行时库(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
运行时库(libstdc++)
- 改进了对 C++17 的支持,包括:
- C++17 实现不再是实验性的。
- 并行算法和
(需要 Thread Building Blocks 2018 或更高版本)。<execution>
.<memory_resource>
- 使用
中的类型和函数现在不需要与<filesystem>
链接。-lstdc++fs