flex、bison代码在visual studio 编译

在cygwin下自己写了个汇编器,使用flex和bison分别做词法和和语法分析。在cygwin下可以运行,但是汇编器要作为整个功能的一部分,就不得不把它封装起来,给外部提供接口。下边大概讲一下移植的过程及遇到的问题。

  1. 在vc下新建win32控制台应用程序,如果你的bison源代码中包含main函数建一个空工程就行了;
  2. 要在Windows下对flex和bison源码(assembler.l和assembler.y)进行重新编译,生成文件assembler_tab.h,assembler_tab.c,lex.yy.c。这里文件名与cygwin下有所区别,cygwin下生成的文件名是assembler.tab.c、assembler.tab.h、lex.yy.c,assembler是我自己起的名字;
  3. 把assembler_tab.h,assembler_tab.c,lex.yy.c三个文件添加到工程,编译。出现错误信息,提示“eh.h”文件只适用于c++,考虑vc对后缀为.c的文件默认使用c编译器,代码使用了c++的内容就会报错。找了半天如何强制设置编译器类型的方法都没找到,索性用最简单的方法,把.c后缀改为.cpp。
  4. 再编译,出错,提示Cannot open include file: 'unistd.h'文件,查了一下该文件是linux下的,相当于Windows下的stdlib.h,那么Windows下应该没用,所以直接注释掉,编译通过。
  5. 然后在命令行下运行,一切ok
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值