不能在使用 make 和 g++ 构建的代码中使用 std::filesystem
Can't use std::filesystem in code built with make and g++
我在使用 make 构建我的 C++ 应用程序时遇到了一些问题。
我有这样的 C++ 代码:
#include <string>
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
auto iter = fs::directory_iterator(fs::current_path());
while(iter._At_end())
{
cout << iter->path() << endl;
}
return 0;
}
我正在尝试使用以下命令编译目标文件:
g++-9 -std=c++17 -Wall -Wextra -pthread -lstdc++fs -c -o main.o main.cpp
但是我有这个错误:
main.cpp:12:16: error: ‘class std::filesystem::__cxx11::directory_iterator’ has no member named ‘_At_end’
12 | while(iter._At_end())
| ^~~~~~~
所以,我不能使用 std::filesystem 命名空间的 classes 的成员,但是如果我只想使用 class(例如 std::filesystem::path),那么一切正常
软件版本:
g++-9 (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
GNU Make 4.2.1
希望你能帮助我。
别用_At_end()
就没事了。
我在使用 make 构建我的 C++ 应用程序时遇到了一些问题。 我有这样的 C++ 代码:
#include <string>
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
auto iter = fs::directory_iterator(fs::current_path());
while(iter._At_end())
{
cout << iter->path() << endl;
}
return 0;
}
我正在尝试使用以下命令编译目标文件:
g++-9 -std=c++17 -Wall -Wextra -pthread -lstdc++fs -c -o main.o main.cpp
但是我有这个错误:
main.cpp:12:16: error: ‘class std::filesystem::__cxx11::directory_iterator’ has no member named ‘_At_end’
12 | while(iter._At_end())
| ^~~~~~~
所以,我不能使用 std::filesystem 命名空间的 classes 的成员,但是如果我只想使用 class(例如 std::filesystem::path),那么一切正常
软件版本:
g++-9 (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
GNU Make 4.2.1
希望你能帮助我。
别用_At_end()
就没事了。