未在此范围内声明错误

时间:2014-01-03 18:30:32

标签: c++ c eclipse visual-studio-2010

我正在处理此代码我尝试从链接列表中删除项目但我无法理解该错误是什么。错误是未在此范围内声明delnode。我建立了eclipse和visual studio,但错误仍在继续。

char name[10];

void delnode(char name[], NODEPTR  *head)
{
    NODEPTR save, prev;
    prev=*head;
    save=prev->n;
    while (save!=*head && strcmp(name ,save->info)>0)
    {
        prev = save;
        save = save->n;
    }
    if (save==*head || strcmp(name,save->info)<0) printf("%s Not found",name);
    else
    {
        if (prev->n==*head) *head=prev;
        prev->n = save->n;
        free(save);
    }
}

int main()
{
    printf("Write a name to delete it");
    scanf("%s",&name);
    delnode(name, head); //Error delnode was not declared in this scope
}

加成; 伙计们,感谢您的帮助,现在它给出了这个错误;

此行有多个标记

- Invalid arguments ' Candidates are: void delnode(char *, node * *) '

- cannot convert ‘NODEPTR {aka node*}’ to ‘node**’ for argument ‘2’ to ‘void delnode(char*, 

 node**)’
- Line breakpoint: lab.cpp [line: 87]
第87行

3 个答案:

答案 0 :(得分:2)

您需要在使用之前提供delnode声明:

void delnode(char name[], NODEPTR  *head); // declaration

char name[10];

int main()
{
  // as before
}

void delnode(char name[], NODEPTR  *head)
{
  // as before
}

修好后,您仍然需要在main中修复此行:

delnode(name, head);

此时,head尚未宣布。

答案 1 :(得分:0)

您正在调用函数delnode,而编译器不知道它是什么。

为了解决这个问题,请在delnode之前移动main函数,或者声明这样的原型(这是优先的):

void delnode(char name[], NODEPTR  *head);

答案 2 :(得分:0)

在功能移动后,您现在似乎有不同的错误  尝试使用&

传递头节点的地址
delnode(name, & head);