Почему в GCC нет стандартной библиотеки файловой системы?

Я столкнулся с проблемой с библиотекой файловой системы, она должна быть включена в компилятор C++17, через 2 дня я попытался установить gcc-7.0.2 в raspberry pi, но он не работал, он не мог распознать команду gcc-7 или g++-7 или даже -std=c++17 поэтому мне пришлось установить g++-6 и gcc-6, используя apt-get installв любом случае, после установки 6 версии компилятор включает C++17. Я использую кодовые блоки в качестве IDE, мне пришлось добавить новый компилятор и добавить параметр -std= C++17, чтобы включить его, но в основном коде, когда я включаю библиотеку файловой системы, он говорит, что нет такого файла или каталога.

мой вопрос, как я могу правильно добавить компилятор C++17 и его библиотеку (например, файловую систему)?

2 ответа

Решение

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 флаг.

Сначала вы должны взглянуть на поддержку C++17 в GCC.

GCC 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

GCC 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

Другие вопросы по тегам