我有一个 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
。
编译器给我这个错误:expected declaration specifiers or ‘...’ before ‘list_node’
在 parse_query 行上。
怎么了?
我尝试将 typedef 放入 parser.h 中,结果很好。当 typedef 位于catalog.h 中时,为什么会出现此错误?
错误是这样的(来自您的评论):
我在catalog.h中有一个#include“parser.h”。我把它删除了,现在可以正常编译了...
假如说#include "parser.h"
在 typedef 之前catalog.h
,并且您有一个源文件,其中包括catalog.h
before parser.h
,那么此时编译器包含parser.h
,typedef 尚不可用。最好重新排列头文件的内容,这样就不会出现循环依赖。
如果这不是一个选项,您可以确保包含这两个文件的任何源文件都包含parser.h
首先(或唯一)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)