簡體   English   中英

c ++ 17 `filesystem` 不是命名空間名稱

[英]c++17 `filesystem` is not a namespace-name

我想知道為什么在下面的代碼中,找不到命名空間filesystem

g++ -std=c++17 main.cpp -lstdc++

// #include <filesystem>   <- error, so changed to the following:
#include <experimental/filesystem>

namespace fs = std::filesystem;

int main()
{
    return 0;
}

錯誤:

main.cpp:3:21: error: ‘filesystem’ is not a namespace-name
 namespace fs = std::filesystem;
                     ^
main.cpp:3:31: error: expected namespace-name before ‘;’ token
 namespace fs = std::filesystem;

gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)

GCC 5.4.0 於 2016 年 6 月發布; 在 C++17 標准被采用前一年多。 它及其版本的 libstdc++ 對 C++17 的支持非常有限。 你可以看到,當GCC加入C ++語言17功能在這里當的libstdc ++加入C ++ 17標准庫的功能在這里

在 GCC 5.4 發布時,文件系統庫尚未在std::filesystem命名空間中實現。 它與該版本中包含的任何其他 <experimental/...> 標頭一起位於std::experimental命名空間中。

<experimental/..>表示實驗命名空間:

namespace fs = std::experimental::filesystem;

請參閱: http : //en.cppreference.com/w/cpp/experimental/fs/path

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM