Question

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?

Était-ce utile?

La 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.

Autres conseils

It looks as though your btreenode.h file is being included (directly or indirectly) multiple times... that's why the "previous declaration" and the "conflicting types" are in the same file at the same line (previous declaration on the first include, conflicting types when it runs into the same line on the next include).

You should use header guards (in btreenode.h) to prevent the header file code from being processed if it's already been included. At the top of the file, add:

#ifndef BTREENODE_H
#define BTREENODE_H

and at the end of the file add:

#endif // BTREENODE_H

That way, whatever is between those will only be compiled if BTREENODE_H was not already #defined from a previous inclusion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top