![](/img/trans.png)
[英]Why can't I use <experimental/filesystem> with g++ 4.9.2?
[英]Using std::experimental::filesystem with g++ 9.3.0
我使用 VS2015 作為我的主要開發工具,並在那里使用std::filesystem
我需要編寫如下內容:
namespace fs = std::experimental::filesystem;
現在我需要使用 g++ 9.3.0 編譯這段代碼,當然,關於“實驗”部分的錯誤。 有沒有辦法在我的代碼中保留這個舊東西並用現代 g++ 編譯它?
使用namespace fs = std::filesystem;
對於 g++。 如果您需要在兩個編譯器中編譯相同的代碼,請使用#if
來區分它們。
我會使用C++ 標准的版本和預處理器指令來區分它們,因為文件系統庫已在 C++17 中正式引入
#if __cplusplus >= 201703L
#include <filesystem>
namespace fs = std::filesystem;
#else
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#endif
如果您使用 C++17 中的另一個庫發生這種情況,您可以使用__has_include
#if __has_include(<some_lib>)
#include <some_lib>
namespace sl = std::some_lib;
#else
#include <experimental/some_lib>
namespace sl = std::experimental::some_lib;
#endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.