1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

why do I get the error "conflicting types for..." ?

Discussion in 'C' started by punto e basta, Aug 9, 2011.

  1. punto e basta

    punto e basta New Member

    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?:(
     
    Last edited by a moderator: Aug 9, 2011
  2. codesAllOver

    codesAllOver New Member

    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.
     
  3. xpi0t0s

    xpi0t0s Mentor

    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.
     

Share This Page