错误:预期的声明说明符或'list_node'之前的'...'

时间:2011-02-15 08:34:50

标签: c header declaration typedef

我有一个带有此

的catalog.h文件
typedef struct node* list_node;
struct node
{
    operationdesc op_ptr;
    list_node next;
};

和一个带有此

的parser.h
#include "catalog.h"

int parse_query(char *input, list_node operation_list);

两个标头都有#ifndef#define#endif。 编译器在parse_query行上给出了这个错误:expected declaration specifiers or ‘...’ before ‘list_node’。 怎么了? 我试着把typedef放在parser.h中,没关系。当typedef在catalog.h中时,为什么会出现此错误?

2 个答案:

答案 0 :(得分:6)

错误就是这个(来自你的评论):

  

我在catalog.h中有一个#include“parser.h”。我把它删除了,现在它正常编译......

假设#include "parser.h"位于catalog.h中的typedef之前,并且您在catalog.h之前有一个包含parser.h的源文件,那么当时编译器包含parser.h 1}},typedef尚不可用。 最好重新排列头文件的内容,这样就不会有循环依赖。

如果这不是一个选项,您可以确保包含这两个文件的所有源文件首先(或仅)包含parser.h

答案 1 :(得分:0)

试试catalog.h

typedef struct node_struct {
     operationdesc op_ptr;
     struct node_struct* next;
} node;

typedef node* list_node;