как использовать std :: filesystem на gcc 8? - PullRequest
0 голосов
/ 08 ноября 2018

Я обновил версию gcc, gcc --version выдает следующий вывод

    gcc (Ubuntu 8.1.0-5ubuntu1~16.04) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

я могу включить файловую систему в заголовочный файл без ошибок

#include<filesystem>

Но когда я пытаюсь получить доступ к файловой системе пространства имен, как показано ниже, я получаю сообщение об ошибке

namespace fs = std::filesystem;

Сообщение об ошибке

error: ‘filesystem’ is not a namespace-name
 namespace fs = std::filesystem;

Это кажется странным, поскольку gcc 8 имеет поддержку std :: filesystem и недоступен в пространстве имен. Я делаю что-то не так при доступе к std :: filesystem?

и да, я построил с -std = c ++ 17

Ответы [ 3 ]

0 голосов
/ 13 марта 2019

Если вы используете IDE, например, кодовые блоки, убедитесь, что установлены флаги компилятора по умолчанию для gcc: -std = c ++ 17, не только текущий проект, но и глобальные флаги.

Устранена эта проблема с CB и установка этого флага в [Настройки / Компилятор] (нет необходимости добавлять lib)

0 голосов
/ 31 июля 2019

Из-за глупой системы повторений я не могу комментировать ответ Слэшмайса.

При использовании IDE убедитесь, что для компилятора также установлено значение GCC8 или выше.

В моем случае, несмотря на то, что CodeLite был установлен, он использовал более низкую версию GCC и вызывал головные боли (не найти заголовок)!

Ручная настройка CodeLite для использования gcc-8 (вместо просто gcc исправлена ​​эта проблема.

0 голосов
/ 08 ноября 2018

Добавьте библиотеку файловой системы в качестве аргумента вашему компилятору, который будет перенаправлен компоновщику. Также убедитесь, что вы используете C ++ 17. И g ++, и clang ++ принимают этот конкретный формат:

--std=c++17 -lstdc++fs
...