Search code examples
cstructcompiler-errorstypedefredefinition

C, "conflicting types for... " error


Before I continue, here is the code which is giving me an error:

#define numScores 3             // the number of test scores which a student will have

struct btreenode{
int studentID;              // the ID number of the student at the current node

float scores[3];            // the 3 test scores of the student

float average;              // the average of the 3 test scores for the student

struct btreenode *left;     // pointer to left side of the tree
struct btreenode *right;    // pointer to right side of the tree
};

typedef struct btreenode *Node;

I'm getting the following error when I compile:

btreenode.h:17: error: redefinition of 'struct btreenode'
btreenode.h:28: error: conflicting types for 'Node'
btreenode.h:28: note: previous declaration of 'Node' was here

I have a block comment at the top so the line numbers are off, but

line 17 is the first line "struct btreenode{"

line 28 is the last line "typedef struct btreenode *Node"

Does anyone know why i'm getting these errors?


Solution

  • The header file should not be included more than once. So use macro in header file to avoid multiple inclusion.

    #ifndef TEST_H__
    #define TEST_H__
    
    /*you header file can have declarations here*/
    
    #endif /* TEST_H__*/
    

    I am assumed that, this kind of approach is not there in your header file.