2011-04-20 43 views
0

所以我有在頭文件(實際上是y.tab.h文件)這樣的定義:lextestpass.l:384:錯誤:「INT」之前預期表達

typedef enum yytokentype { 
TOKEN_UNKNOWN = 1000, 
TOKEN_ABBREV = 1001, 
TOKEN_AT = 1002, 
TOKEN_COMMA = 1003, 
TOKEN_COMMENT = 1004, 
TOKEN_ENTRY = 1005, 
TOKEN_EQUALS = 1006, 
TOKEN_FIELD = 1007, 
TOKEN_INCLUDE = 1008, 
TOKEN_INLINE = 1009, 
TOKEN_KEY = 1010, 
TOKEN_LBRACE = 1011, 
TOKEN_LITERAL = 1012, 
TOKEN_NEWLINE = 1013, 
TOKEN_PREAMBLE = 1014, 
TOKEN_RBRACE = 1015, 
TOKEN_SHARP = 1016, 
TOKEN_SPACE = 1017, 
TOKEN_STRING = 1018, 
TOKEN_VALUE = 1019 
} token_t; 

,這是的一部分

static token_t out_token(token_t t) 
{  
    int n; 
int temp; 

if (1) 
{ 
temp = int(t); 
temp = 1000-temp; 
(void)printf("this is the value of the array : %d\n",temp); 
(void)printf("%d\t%s\t", (int)t, type_name[temp]); 
} 

但它給我下面的錯誤:

lextestpass.l:384: error: expected expression before ‘int’ 

是不是因爲類型轉換的,我使用的功能?

回答

3
int(t) 

這是一個C++函數風格的類型轉換。 C風格演員在名稱周圍使用括號:

(int)t 
+0

您先生,非常出色。我忽略了一件小事。 *尷尬的時刻*謝謝。 – Achint 2011-04-20 23:03:33

+0

不,我不太聰明。我只是另一個總是犯這種錯誤的傻瓜。 – 2011-04-20 23:08:36

相關問題