当我尝试编译这个简单的lex程序的输出时:
# lex.l
integer printf("found keyword INT");
Run Code Online (Sandbox Code Playgroud)
使用:
$ gcc lex.yy.c
Run Code Online (Sandbox Code Playgroud)
我明白了:
Undefined symbols:
"_yywrap", referenced from:
_yylex in ccMsRtp7.o
_input in ccMsRtp7.o
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
lex --version告诉我,我实际上正在使用'flex 2.5.35',尽管ls -fla`其中lex`不是符号链接.任何想法为什么输出不会编译?
小智 20
从Flex手册:
我收到一个关于undefined yywrap()的错误.
你必须提供自己的yywrap()函数,或链接到libfl.a(提供一个),或使用
Run Code Online (Sandbox Code Playgroud)%option noyywrap在你的来源中说你不想要一个yywrap()函数.
当扫描仪从YY_INPUT接收到文件结束指示时,它会检查yywrap()函数.如果yywrap()返回false(零),则假定该函数已经完成并设置yyin指向另一个输入文件,并继续扫描.如果它返回true(非零),则扫描程序终止,向其调用者返回0.请注意,在任何一种情况下,启动条件都保持不变; 它没有恢复到INITIAL.
| 归档时间: |
|
| 查看次数: |
6219 次 |
| 最近记录: |