lextestpass.l: 384: ошибка: ожидаемое выражение перед 'int' - PullRequest
0 голосов
/ 21 апреля 2011

Итак, у меня есть это определение в заголовочном файле (на самом деле это файл y.tab.h):

  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’ 

Это из-за приведения типов?

1 Ответ

3 голосов
/ 21 апреля 2011
int(t)

Это приведение в стиле функции C ++.Приведение в стиле C использует круглые скобки вокруг typename:

(int)t
...