Используйте бизона и согните с vc6 - PullRequest
0 голосов
/ 06 августа 2009

Когда я использую bison & flex с vc6, я получаю ошибки ниже

lex.yy.c (395): ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'YY_PROTO' lex.yy.c (395): фатальная ошибка C1004: обнаружен неожиданный конец файла

в чем причина этого ?? пожалуйста, помогите.

Скопировано из комментария:

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus 
extern "C" int yywrap YY_PROTO(( void )); 
#else
extern int yywrap YY_PROTO(( void )); 
#endif
#endif 

Ответы [ 2 ]

1 голос
/ 06 августа 2009

Макрос YY_PROTO предназначен только для поддержки старого стандартного C без поддержки прототипов. Вам будет сложно найти компилятор, который не поддерживает это сегодня. Это означает, что в качестве первого шага отладки вы можете попытаться полностью удалить его, так как хотите использовать прототипы, т.е. измените lex.yy.c на следующее:

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap ( void );
#else
extern int yywrap ( void );
#endif
#endif

Я знаю, что lex.yy.c является сгенерированным файлом, так что это не будет постоянное исправление, но оно должно как минимум подтвердить, что проблема связана с определением YY_PROTO.

0 голосов
/ 07 мая 2013

YY_PROTO - это макрос, который был определен ранее в том же файле, поэтому что-то странное происходит рядом с определением макроса. Поиск в файле ранее, чтобы увидеть, как определяется YY_PROTO - если он не определен, ваш компилятор делает что-то очень странное.

...