我收到“未找到标识符”错误

时间:2011-09-22 21:03:27

标签: c++ compiler-errors identifier

这是我第一次尝试创建一个基本列表(我在学校需要这个),我得到一个奇怪的错误。

这是剧本:

#include "stdafx.h"
#include<iostream>
#include<conio.h>

using namespace std;
using namespace System;
using namespace System::Threading;

struct nod
{
    int info;
    nod *leg;
};

int n, info;
nod *v;
void main()
{
    ....
    addToList(v, info); //I get the error here
    showList(v); //and here
}

void addToList(nod*& v, int info)
{
    nod *c = new nod;
    c->info=info;
    c->leg=v;
    v=c;
}

void showList(nod* v)
{
    nod *c = v;
    while(c)
    {
        cout<<c->info<<" ";
        c=c->leg;
    }
}

确切的错误是: 错误C3861:'addToList':找不到标识符

我不知道为什么我会这样...抱歉,如果这是一个愚蠢的问题,但我对此很新。谢谢你的理解。

4 个答案:

答案 0 :(得分:3)

标识符必须在使用前声明。在文本文件中提前移动addToList的声明和定义。

因此:

#include "stdafx.h"
#include<iostream>
#include<conio.h>

using namespace std;
using namespace System;
using namespace System::Threading;

struct nod
{
    int info;
    nod *leg;
};

int n, info;
nod *v;

void addToList(nod*& v, int info)
{
    nod *c = new nod;
    c->info=info;
    c->leg=v;
    v=c;
}

void showList(nod* v)
{
    nod *c = v;
    while(c)
    {
        cout<<c->info<<" ";
        c=c->leg;
    }
}


void main()
{
    ....
    addToList(v, info); //No more error here
    showList(v); //and here
}

答案 1 :(得分:3)

尝试在main上面声明addToList:

void addToList(nod*& v, int info);

同样适用于showList。编译器需要先查看函数声明才能使用它。

答案 2 :(得分:3)

在实现之前,您需要使用前向声明来使用方法。把它放在main之前:

void addToList(nod*& v, int info);

在C / C ++中,只有在声明后才能使用方法。要允许在不同方法之间进行递归调用,可以使用forward declarations以允许使用将向前实现的函数/方法。

答案 3 :(得分:0)

尝试在showList()之前放置addToList()main()的声明。