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

我收到编译错误:

错误C3861:’initNode’:找不到标识符“

以下是代码:

# include  # include "stdafx.h" # include  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似乎不会导致编译器失败,除非你没有在post中报告这些错误)。 如果使用C编译器(可以通过Visual Studio在源文件上使用.c扩展名轻松实现),则无需转换malloc()的返回值。 请参阅ISO C和ISO C ++之间的不兼容性 ,这是在问题的答案中提供的链接我可以期望使用C ++编译器编译C代码有什么问题?