【问题标题】:error: use of undeclared identifier 'experimental'错误:使用未声明的标识符“实验性”
【发布时间】:2026-02-14 20:00:02
【问题描述】:

编译我的 C++ 代码时,我不断收到此错误。我已经包含了所有标题,并且在 VS 代码中处理此代码时遇到了麻烦,但没有运气。非常感谢任何帮助!

ConsoleApplication1.cpp:151:17: error: use of undeclared identifier 'experimental'
        for (auto& p : experimental::filesystem::recursive_directory_iterator(path)) {

任何关于为什么我收到错误“使用未声明的标识符'实验性”的帮助将不胜感激。我在我的 Mac 上安装了最新版本的 vs 代码,我只是在做 g++ ConsoleAppliation1.cpp,这就是出现 4 个警告和 1 个错误的地方。这是我包含的标题


#include <iostream>
#include "stdafx.h"
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>  
#include <sstream>
#include <map>  
#include <thread>
#include <chrono>
#include <cstdlib>
#include "CSVRow.h"
#include "Definements.h"
#include "Node.h"
#include "Reverse.h"
#include "dijkstras.h"
#include "dijkstras2.h"
#include "smart_ptr.h"
#include "targetver.h"
//#include <Windows.h> 
//#include <Wininet.h>
#include <experimental/filesystem>
//#include <tchar.h>
//#include <urlmon.h>
#include <ctime>
#include <unordered_map>
#include <utility>
#include "ConsoleApplication1.h"
#include <unordered_set>

只是跟进,感谢评论的人,我现在收到了

error: no member named 'experimental' in namespace 'std'

什么时候做

#ifdef __cpp_lib_filesystem
#  include <filesystem>
    namespace fs = std::filesystem;
#else
#  include <experimental/filesystem>
    namespace fs = std::experimental::filesystem;

#endif

有谁知道如何解决编译时在 std 中找不到实验性的错误?我在 mac 上使用最新版本的 c++,使用 VS 代码作为我的 IDE

【问题讨论】:

  • “C++11 扩展”警告意味着您可能正在使用非常旧的 C++ 编译器。
  • @Eugene ,我使用 C++ 11,就像我做 g++ --version 时一样

标签: c++ visual-studio-code compiler-errors


【解决方案1】:

用这个替换#include &lt;experimental/filesystem&gt;

#include <filesystem>
namespace fs = std::filesystem;

并在其余代码中使用fs。例如。 fs::directory_iterator

【讨论】:

  • 我想把它写在我的 c++ 文件的顶部,例如。在 ConsoleApplication1.cpp 之上?如果是这样,我得到一个无效的命名空间 fs = std::experimental::filesystem 的预处理指令?
  • 把它放在使用fs的.cpp文件的顶部。
  • 错字:应该是ifdef,而不是第一行的if
  • 当我把命名空间放在顶部时,我得到一个无效的预处理指令
  • 对不起,命名空间没有#