]]>询问一个编译原理的问题: implicit declaration of function 'yyerror' is invalid in C99tag:www.v2ex.com,2015-06-19:/t/1999002015-06-19T11:59:37Z2015-06-18T11:56:37ZEchoChanmember/EchoChan 做的,源码在https://github.com/jengelsma/yacc-tutorial 也就是两个文件, 一个https://github.com/jengelsma/yacc-tutorial/blob/master/calc.l 一个https://github.com/jengelsma/yacc-tutorial/blob/master/calc.y 利用命令生成y.tab.c和y.tab.h以及lex.yy.c后,使用gcc lex.yy.c y.tab.c -o calc命令,出现了如下错误 calc.l:11:8: warning: implicit declaration of function 'yyerror' is invalid in C99 [-Wimplicit-function-declaration] {ECHO; yyerror ("unexpected character");} ^ 1 warning generated. y.tab.c:1249:16: warning: implicit declaration of function 'yylex' is invalid in C99 [-Wimplicit-function-declaration] yychar = YYLEX; ^ y.tab.c:605:16: note: expanded from macro 'YYLEX' # define YYLEX yylex () ^ calc.y:46:5: warning: implicit declaration of function 'islower' is invalid in C99 [-Wimplicit-function-declaration] if(islower(token)) { ^ calc.y:48:12: warning: implicit declaration of function 'isupper' is invalid in C99 [-Wimplicit-function-declaration] } else if(isupper(token)) { ^ 3 warnings generated.
Google了一圈,按照http://stackoverflow.com/questions/27220759/linker-error-yacc-on-mac 和http://stackoverflow.com/questions/23717039/generating-a-compiler-from-lex-and-yacc-grammar的说法都没解决。请问这怎么解决?是不是因为os x 内置的GCC编译器只能生成C99风格的代码而造成的? ]]>哪位大神帮忙看一下代码有什么问题tag:www.v2ex.com,2012-11-03:/t/516152012-11-03T07:03:36Z2012-11-03T08:20:13Zskydivermember/skydiver但是用给的测试案例结果没有错。