I have a catalog.h file with this
typedef struct node* list_node;
struct node
{
operationdesc op_ptr;
list_node next;
};
and a parser.h with this
#include "catalog.h"
int parse_query(char *input, list_node operation_list);
Both headers have #ifndef
, #define
, #endif
.
The compiler gives me this error: expected declaration specifiers or ‘...’ before ‘list_node’
on the parse_query line.
What's the matter?
I tried to put the typedef in parser.h, and it's fine. Why do I get this error when the typedef is in catalog.h?
Try this for
catalog.h
:The error is this (from your comment):
Assuming that
#include "parser.h"
was before the typedef incatalog.h
, and you have a source file that includescatalog.h
beforeparser.h
, then at the time the compiler includesparser.h
, the typedef isn't available yet. It's probably best to rearrange the contents of the header files so that you don't have a circular dependency.If this isn't an option, you can ensure that any source files that include these two files include
parser.h
first (or only).