1

ファイルのコンパイル中に次の問題が発生します。YYLTYPEの定義を次のように上書きしました(デフォルトと同じですが、拡張します)

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

lexファイルに以下を追加すると、「yylloc undefinedinthisscope」エラーが発生します。

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

Pastebin:

4

1 に答える 1

2

とファイルの両方にあるヘッダーファイルにYYLTYPEとの定義を入れる必要があります。また、を定義するファイルの後にファイルにファイルを入れる必要があります。YYLTYPE_IS_DECLARED#include.y.l#include.tab.h.l#includeYYLTYPE

上記の理由は、bisonがファイルの先頭から定義をエクスポートないためです。したがって、別の場所で定義が必要な場合は、使用できるように調整する必要があります。さらに悪いことに、ファイルには常にデフォルト(によって保護されている)があるため、その前に定義が表示されていることを確認する必要があります。YYLTYPE.y.tab.hYYLTYPE#ifndef YYLTYPE_IS_DECLARED

于 2012-04-30T22:28:47.790 に答える