簡體   English   中英

使用帶有 g++ 9.3.0 的 std::experimental::filesystem

[英]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.

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