【发布时间】:2018-11-18 21:15:29
【问题描述】:
有没有办法确定我是否可以使用标准 <filesystem>(在所有支持 C++17 的现代 C++ 编译器上都可用)或旧编译器使用的 <experimental/filesystem>。 (例如 g++ 6.3,这是 Debian Stretch 上的当前标准版本)
知道使用哪个很重要,因为第一个使用std::filesystem::xxx,后者使用std::experimental::filesystem::xxx。
【问题讨论】:
-
我一直使用命名空间别名,所以将
namespace fs = std::filesystem;从namespace fs = std::experimental::filesystem;转换为微不足道然后用别名声明所有内容:fs::path p = ...; -
"知道使用哪一个很重要,因为 ..." 这比这更重要,因为它们之间存在行为差异。
-
我羡慕你们对图书馆的支持。
-
@NicolBolas 这就是我在下面的答案中创建 sn-p 的原因,因为它允许根据使用的版本使用预处理器对代码进行调整。
标签: c++ filesystems c++17