2012-10-04 82 views
2

我得到下面的編譯錯誤:錯誤C3861: 'initNode':標識符找不到

error C3861: 'initNode': identifier not found"

下面是代碼:

# 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); 
} 

如何解決這個問題?

回答

3

錯誤發生是因爲initNode()在調用之前不可見。 要更正將initNode()的聲明或將其定義移到第一次使用之前。


代碼看起來像C,但它似乎您使用的是C++編譯器來編譯它(如使用node,而不是struct node似乎沒有引起編譯失敗,除非你有沒有報告這些錯誤你的文章)。如果您使用C編譯器(可以通過Visual Studio的源文件中的.c擴展名輕鬆實現),則不需要投射返回值malloc()。請參閱Incompatibilities Between ISO C and ISO C++,回答問題時發現的鏈接What issues can I expect compiling C code with a C++ compiler?

+0

我把所有功能的簽名放在頂部,但現在這個錯誤即將到來 「致命錯誤C1903:無法從先前的錯誤中恢復;停止編譯」 – OOkhan

+0

@ 100khan,不要把它放在'struct node'之前。 – hmjd

+0

解決 但另一個錯誤:( 「致命錯誤LNK1169:找到一個或多個乘法定義的符號」 – OOkhan

相關問題