unknown type name defined struct

Viewed 440

I have this header file node.h:

#ifndef NODE_H
#define NODE_H

#include <stdio.h>
#include "symboltable.h"
#include "threeaddress.h"
#include "types.h"

typedef struct NODE NODE;
typedef struct LITERALNODE LITERALNODE;

struct NODE {
    INSTRUCTION code;
    SYMBOL_INFO *place;
    NODE *next;
    NODE *previous;
};

struct LITERALNODE {
    TYPE_INFO *typeInfo;
    int integerValue;
    char charValue;
};

LITERALNODE *generateIntegerLiteral(TYPE_INFO *typeInfo, int integerValue);
LITERALNODE *generateCharLiteral(TYPE_INFO *typeInfo, char charValue);
void concatNodes(NODE *node1, NODE *node2);

#endif

And this node.c file

#include "node.h"
#include "types.h"

LITERALNODE *generateIntegerLiteral(TYPE_INFO *typeInfo, int integerValue) {
    LITERALNODE *literalNode;
    literalNode->typeInfo = typeInfo;
    return literalNode;
}

LITERALNODE *generateCharLiteral(TYPE_INFO *typeInfo, char charValue) {
    LITERALNODE *literalNode;
    literalNode->typeInfo = typeInfo;
    return literalNode;
}

void concatNodes(NODE *node1, NODE *node2) {
    node1->next = node2;
    node2->previous = node1;
}

When I try to compile node.c I get the following errors:

node.c:4:1: error: unknown type name 'LITERALNODE'
 LITERALNODE* generateIntegerLiteral(TYPE_INFO* typeInfo, int integerValue) {
 ^
node.c: In function 'generateIntegerLiteral':
node.c:5:2: error: unknown type name 'LITERALNODE'
  LITERALNODE* literalNode;
  ^
node.c:6:13: error: request for member 'typeInfo' in something not a structure or union
  literalNode->typeInfo = typeInfo;
             ^
node.c: At top level:
node.c:10:1: error: unknown type name 'LITERALNODE'
 LITERALNODE* generateCharLiteral(TYPE_INFO* typeInfo, char charValue) {
 ^
node.c: In function 'generateCharLiteral':
node.c:11:2: error: unknown type name 'LITERALNODE'
  LITERALNODE* literalNode;
  ^
node.c:12:13: error: request for member 'typeInfo' in something not a structure or union
  literalNode->typeInfo = typeInfo;

I can't seem to spot my mistake, can anyone help me. Also Why would the compiler comment on LITERALNODE and not on NODE, since they are constructed in exactly the same way.

0 Answers
Related