2011-03-11 80 views
1

我定義我的結構工會內部對野牛錯誤:之前預計符限定符列表「TR」

我做了一個結構的問題

typedef enum {Binary_Op,Uni_Op,Variable, Const} Tag_Type; 

typedef struct tree 
{ 
    Tag_Type Tag; 
    union 
    { 
     struct 
     { 
      char op; 
      struct tree *left, *right; 
     }bin_op; 

     struct 
     { 
      char op; 
      struct tree *arg; /* negative or positive */ 
     }uni_op; 

     char var; 
     int const_val; 
    }u; 

}TREE_REC, *TR; 




%} 

%union 
{ 

    int y_int; 
    TR y_tree; 
} 

%type <y_tree> expr term factor assign 
%token <y_int> CONST 
%token <y_int> VAR 



%% 

但工會裏面TR有錯誤。我不明白爲什麼!任何幫助?

+0

您能提供錯誤信息嗎? – 2011-03-11 21:27:29

+0

錯誤:'TR'前的預期說明符 - 限定符列表 – Kevin 2011-03-11 21:31:12

回答

0

我對你的typedef struct tree {...} TREE_REC, *TR有點困惑。我寧願寫:

typedef struct tree {...} TREE_REC; //Alias on struct tree 
typedef TREE_REC * TR; //Definition of the pointer to a struct tree 

你的typedef中的,令我感到困擾。

你可以測試我的解決方案,或只是澄清你的typedef的語法?

+0

仍然是同樣的問題,無論哪種方式。 – Kevin 2011-03-11 21:44:31

+0

第一個參數實際上是列表,然後結構中的第二個參數給我們指向樹節點的指針。 – Kevin 2011-03-11 21:44:54

+0

愚蠢的答案,但我的頭文件錯了哈哈。 – Kevin 2011-03-11 22:20:52

4

您需要在和TR中定義一個頭文件,該文件中的您的#include#include "y.tab.h"之前。錯誤消息告訴你,在編譯器看到它的定義之前,你正試圖使用​​TR

+0

我個人得到這個錯誤是因爲我忘記將我的枚舉定義爲typedef。這個答案觸發了我的記憶:) – Larry 2016-08-02 01:39:36

相關問題