【发布时间】:2019-05-11 06:22:47
【问题描述】:
由于某种原因,即使我事先包含了.h,联合中的结构指针似乎也没有定义。
%{
#include "agent.h"
.
.
.
%}
%union {int iValue; char sIndex; ASTnode *nPtr; litNode *litPtr; ruleNode *rulePtr; exprNode *expPtr; actNode *actPtr; conNode *conPtr};
.
.
.
%%
但是,在#include "agent.h" 下使用此类结构指针的函数定义可以正常工作。为什么会出现错误:
y.tab.h:58:15: error: unknown type name ‘ASTnode’
typedef union {int iValue; char sIndex; ASTnode *nPtr; litNode *litPtr; ruleNode *rulePtr; exprNode *expPtr; actNode *actPtr; conNode *conPtr} YYSTYPE;
^
y.tab.h:58:15: error: unknown type name ‘litNode’
y.tab.h:58:15: error: unknown type name ‘ruleNode’
y.tab.h:58:15: error: unknown type name ‘exprNode’
y.tab.h:58:15: error: unknown type name ‘actNode’
y.tab.h:58:15: error: unknown type name ‘conNode’
即使我包含了.h 文件?
我已经看到有关该问题的其他问题,但他们已通过包含头文件解决了该问题,但就我而言,它仍然无法正常工作。
谢谢。
【问题讨论】:
-
参见
%code requires块,这些块也被复制到生成的头文件中。 -
请不要发布代码的 sn-p,该代码仅显示
yacc(1)源文件的一般结构。假设在此论坛中收听的用户知道yacc(1)文件的结构,并且更好地格式化内部定义的union的结构,因为很难从错误消息中识别任何内容,因为一切都在同一行。顺便说一句,显示类型ASTnode的定义,因为错误指出该类型未在任何地方定义,并且您没有说明该类型。
标签: c pointers structure union yacc