根据编译器,函数listLength()不在此范围内声明。但是它是在main()函数之前声明的。
即使我查看了其他人的问题,也看不到该函数有什么问题。

代码有什么问题?

/* ... */

int listLenght(node* head){
    node *temp = head;
    int length;
    while(temp->next != NULL){
        length++;
        temp = temp->next;
    }
    return length/2;
}


void createList(int length, node *head){
    node *temp = head;
    for(int i = 0; i < length; i++){
        temp->next = (node*) malloc(sizeof(node));
        temp->data = i;
        temp = temp->next;
        temp->next = NULL;
    }
}


...


int main(){
    node *head = (node*) malloc(sizeof(node));
    createList(5, head);
    int a = listLength(head);
}

最佳答案

未定义listLength()listLenght()是。

首先相信编译器,或者尝试证明它是错误的,这样容易发现这种小错误。
即搜索“listLength”,然后看它是否在您的代码中……除了编译器抱怨的调用之外,没有其他地方。
或者(由Martin James很好地输入),反过来说,采用编译器抱怨的“ undefined symbol ”,并将其粘贴到“明显相同”定义的位置。 “这使问题得以解决的频率令人惊讶,”(马丁和我完全同意的话)。如果确实有帮助,则存在一些微小的差异(甚至三次)。

'1'(数字),
'l'(小写字母'L'),
'I'(大写字母'i')
在某些字体中可能非常相似。

关于c - 错误 “Function was not declared in this scope”,即使它是,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49967703/

10-13 22:01