Почему в 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
Теперь.