1

编译文件时遇到以下问题。我已经覆盖了 YYLTYPE 的定义如下(虽然它与默认相同但我会扩展它

typedef struct YYLTYPE  
{  
  int first_line;  
  int first_column;  
  int last_line;  
  int last_column;  
} YYLTYPE;

当我在 lex 文件中添加以下内容时,我得到“yylloc undefined in this scope”错误。

#define YY_USER_INIT yylloc.first_line = yylloc.first_column = 1;

巴斯宾:

4

1 回答 1

2

您需要将 和 的定义放入您的YYLTYPE和文件中YYLTYPE_IS_DECLARED的头文件中,并且您需要将文件中的文件放在定义.#include.y.l#include.tab.h.l#includeYYLTYPE

上述原因是野牛不会从文件顶部导出您的定义,因此如果您想要它在其他地方,您需要安排它可用。更糟糕的是,该文件将始终具有默认值(由 保护),因此您需要确保在它之前看到您的定义。YYLTYPE.y.tab.hYYLTYPE#ifndef YYLTYPE_IS_DECLARED

于 2012-04-30T22:28:47.790 回答