错误 C3861:"initNode":找不到标识符

error C3861: 'initNode': identifier not found

本文关键字:标识符 找不到 initNode 错误 C3861      更新时间:2023-10-16

我得到以下编译错误:

错误 C3861:"initNode":找不到标识符"

下面是代码:

# include <conio.h>
# include "stdafx.h"
# include <stdlib.h>
struct node{
    node * next;
    int nodeValue;
};
node*createList (int value)  /*Creates a Linked-List*/
{
    node *dummy_node = (node*) malloc(sizeof (node));
    dummy_node->next=NULL;
    dummy_node->nodeValue = value;
    return dummy_node;
}

void addFront (node *head, int num ) /*Adds node to the front of Linked-List*/
{
    node*newNode = initNode(num);   
    newNode->next = NULL;
    head->next=newNode;
    newNode->nodeValue=num;
}
void deleteFront(node*num)   /*Deletes the value of the node from the front*/
{
    node*temp1=num->next;
    if (temp1== NULL) 
    {
        printf("List is EMPTY!!!!");
    }
    else
    {
        num->next=temp1->next;
        free(temp1);
    }
}
void destroyList(node *list)    /*Frees the linked list*/
{
    node*temp;
    while (list->next!= NULL) 
    {
        temp=list;
        list=temp->next;
        free(temp);
    }
    free(list);
}
int getValue(node *list)    /*Returns the value of the list*/
{
    return((list->next)->nodeValue);
}

void printList(node *list)   /*Prints the Linked-List*/
{
    node*currentPosition;
    for (currentPosition=list->next; currentPosition->next!=NULL; currentPosition=currentPosition->next)  
    {`enter code here`
        printf("%d n",currentPosition->nodeValue);
    }   
    printf("%d n",currentPosition->nodeValue);
}
node*initNode(int number) /*Creates a node*/
{
    node*newNode=(node*) malloc(sizeof (node));
    newNode->nodeValue=number;
    newNode->next=NULL;
    return(newNode);
}

如何修复此错误?

发生错误是因为initNode()在调用之前不可见。更正放置initNode()声明,或将其定义移动到首次使用之前。


代码看起来像 C,但似乎您正在使用 C++ 编译器来编译它(因为使用 node 而不是 struct node 似乎不会导致编译器失败,除非您没有在帖子中报告这些错误)。如果使用 C 编译器(可以通过使用 Visual Studio 在源文件上使用.c扩展名轻松实现),则不需要强制转换返回值 malloc() 。请参阅之间的不兼容性ISO C 和 ISO C++ ,在回答问题时提供了链接 使用 C++ 编译器编译 C 代码会遇到哪些问题?