Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   why do I get the error "conflicting types for..." ? (http://www.go4expert.com/forums/i-error-conflicting-types-t26461/)

punto e basta 9Aug2011 14:25

why do I get the error "conflicting types for..." ?
 
This is my code. The types are identical as far as I can see... If anyone could point out the error I'd be grateful. By the way I'm trying to implement a very simple singly-linked list. Any comments or suggestions would are kindly welcomed. Thanks!

Code:

#include <stdio.h>
#include <stdlib.h>

//void list_insert (int k, struct node* head, struct node* curr);

int main()
{
    struct node
    {
        int numdata;
        struct node* next;
    };

    struct node* head;
    struct node* curr;
    head=NULL;
    curr=NULL;

    list_insert(1, head, curr);
    list_insert(2, head, curr);
    list_insert(3, head, curr);

    return 0;
}

void list_insert (int k, struct node* head, struct node* curr)
{
    curr->numdata=k;
    curr->next=head;
    head=curr;
}

void show_list(node* head)
{
    node* curr;
    curr=head;
    printf("\n");
    while(curr!=NULL)
        printf("%d ",curr->numdata);
    printf("end of list\n")
}

*****************
It says: "conflicting types for 'list_insert.' " Why?:(

codesAllOver 9Aug2011 23:22

Re: why do I get the error "conflicting types for..." ?
 
Well, you have declared Structure Node inside the main method so the declaration is visible only to the main method.
Rest of teh compiler doesn't know what a node is, so in order to use this in all the functions of your program just declare it out side the main block....and your problem should be solved.

xpi0t0s 14Aug2011 12:46

Re: why do I get the error "conflicting types for..." ?
 
Also why is the prototype commented out? Without this the compiler will assume list_insert is defined
Code:

int list_insert();
so if you don't want that, use prototypes and DON'T comment them out.


All times are GMT +5.5. The time now is 12:31.