如何修复可视化工作室中的"C2061语法错误标识符"堆栈?

How to fix 'C2061 syntax error identifier 'stack'' in visual studio?

本文关键字:错误 语法 标识符 堆栈 C2061 可视化 工作室 何修复      更新时间:2023-10-16

我在代码中使用堆栈,它显示了此错误。其他问题说我有循环依赖性,但我只有1个标题文件

//function.h
#pragma once 
void dfs(int start, int goal, bool visited[], int **matrix, int size,
         bool &found, stack<int>& path);
//function.cpp
#include "function.h"
#include <iostream>
#include <stack>
using namespace std;
void dfs(int start, int goal, bool visited[], int **matrix, int size,
         bool &found, stack<int>& path)
{
    visited[start] = true;
    cout<<start<<" ";
    path.push(start);
    if (start == goal)
        found = true;
    for (int k = 0; k < size; k++)
    {
        if (visited[k] == false && matrix[start][k] && found == false )
            dfs(k,goal,visited,matrix,size,found,path);
        path.pop();
    }
}
//main.cpp
#include "function.h"
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
void main()
{
    stack<int> path;
    for(int i=0; i<N; i++)
        visit[i] = false; //init visit
    for(int i = 0; i < N; ++i)
        matrix[i] = new int[N]; // build rows
    for(int i = 0; i < N; ++i)
    {
        for(int j = 0; j < N; ++j)
        {
            fin>>matrix[i][j];
        }
    }
    dfs(start, end, visit, matrix, 5, found, path);    
}

它应该运行,但它会一直给我这个语法错误:"错误c2061:语法错误:标识符'stack'"

您的标题文件应该看起来像

//function.h
#pragma once 
#include <stack>
void dfs (int start, int goal, bool visited[], int **matrix, int size, bool 
&found, std::stack<int>& path);

您需要在dfs功能原型之前进行#include <stack>

您应该完全限定类型名称stack(即std::stack不是stack),因为using namespace std;是标题文件中的一个非常糟糕的主意。