Can you explain this error for me?
In my A.h file:
struct TreeNode;
struct TreeHead;
typedef struct TreeNode * Node;
typedef struct TreeHead * Head;
In my A.c file:
struct TreeNode {
char* theData;
Node Left;
Node Right;
} ;
struct TreeHead{
int counter;
char type;
Node Root;
};
Head Initialisation() {
Head treeHead;
treeHead = malloc(sizeof (struct TreeHead));
treeHead->Root = malloc(sizeof (struct TreeNode));
return treeHead;
}
In my Main.c file:
Head head;
Node tree;
int choose =5;
head = Initialisation();
(head->Root) = tree; //When compiling, this line has an error: error: dereferencing pointer to incomplete type
haed->Root will return a Node pointer, tree is also a Node pointer. So why error is dereferencing pointer to “incomplete” type?
Because in compiling main.c, only the typdef is visible, not the definition of struct Treenode (which is in A.c). So the compiler does not know what is in the struct, and so does not know it even contains a Root node