在C++ Builder 6中编译flex生成的c文件(更新1)

时间:2022-06-05 12:56:58

这是我的第一篇技术文章,庆祝一下在C++ Builder 6中编译flex生成的c文件(更新1)

今天,找了半天资料,终于在BCB6中编译通过flex生成的源文件,其实也很简单,只是在网上找资料的过程充满了曲折。在这里给大家说明一下,以免再犯这样的错误

1. 下载安装flex for windows版本,至少是2.5.4a, 以下的版本编译有错,主要是命名空间冲突
下载地址为
http://umn.dl.sourceforge.net/sourceforge/gnuwin32/flex-2.5.4a-1.exe
或者
http://gnuwin32.sourceforge.net/packages/flex.htm

2. 在工程中加入文件libyywrap.c
文件的内容为

/*  libyywrap - flex run-time support library "yywrap" function  */

/*  $Header: /home/daffy/u0/vern/flex/RCS/libyywrap.c,v 1.1 93/10/02 15:23:09 vern Exp $  */

int  yywrap()
 {
 
return   1 ;
 }

那么这个yywrap函数是干什么用的呢?其实,他是一个可以由用户来实现的函数,用来对多个文件进行处理。默认情况下,返回1,表示只需要处理一个文件,且当前文件已经打开,默认文件句柄为yyin。若返回0,则需要在这个函数中打开文件,并把文件句柄传给yyin。

至于低版本flex的为什么有命名空间冲突,我还没有研究,以后会补上。再就是我只试了使用flex生成的c文件,至于生成的c++文件是否也能编译通过,也待以后的测试。
 

更新历史:
2007.6.25    更新1   加入对yywap函数的说明。