2

以下のコンパイルエラーが発生します:

エラー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);
}

このエラーを修正する方法は?

4

1 に答える 1

3

initNode()呼び出される前に表示されないため、エラーが発生しています。の宣言を修正するinitNode()か、その定義を最初に使用する前に移動します。


コードはCのように見えますが、C ++コンパイラを使用してコンパイルしているようです(投稿でこれらのエラーを報告していない限り、を使用してもコンパイラが失敗する原因にはならないようです)nodestruct nodeCコンパイラ(Visual Studioを使用してソースファイルに拡張子を付けることで簡単に実現できます)を使用する場合は.c、の戻り値をキャストする必要はありませんmalloc()ISOCとISOC++の間の非互換性、質問への回答で提供されたリンクを参照してください。C ++コンパイラでCコードをコンパイルするとどのような問題が予想されますか?

于 2012-10-04T08:22:07.027 に答える