错误:' i '没有命名类型

error: ‘i’ does not name a type

本文关键字:类型 错误      更新时间:2023-10-16

我正在使用boost文件系统,我有以下代码来获取根目录中的文件列表。

#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;
int main()
{
    path p("/");
    for (auto i = directory_iterator(p); i != directory_iterator(); i++)
    {
        if (!is_directory(i->path())) 
        {
            cout << i->path().filename().string() << endl;
        }
        else
            continue;
    }
}

但是在gcc [ubuntu]

error: ‘i’ does not name a type
     for (auto i = directory_iterator(p); i != directory_iterator(); i++)

GCC不自动启用c++ 11模式,使用auto进行类型演绎需要使用c++ 11模式(或更高版本)

您可以使用-std=c++11选项启用此功能:

<>之前$ g++ -std=c++11 your_source_file.cpp

关键字auto的使用仅在c++11中有效。您使用的编译器是否符合此要求?在c++11之前,auto是一个存储持续时间指定符。你的错误看起来像编译器在用旧的方式解释它。