编译研究(1)——函数前向定义

    一年前写了个小型编译器,很久没碰,觉得蛮可惜的,于是从上个月开始又搬出来,利用业余时间改改bug,增加一些新功能  ,倒也比过去强壮实用了不少。今天想把过程调用放到表达式中去,让其返回值也参加运算。想着没什么难度,就开始了。谁知忽略了很重要的一样内容,因为在表达式中要对所有操作数做类型检查,对过程返回值,由于有的过程可能在调用函数(caller)后面定义,就是说被调用函数(callee)子树在调用点后面才生成,因此在生成caller子树时根本不知道callee的返回值类型,也就无法完成表达式操作数的类型检测,也就无法进行后面的代码生成了。因此,一个最简便也是最有效的办法就是前向声明,也就是对于调用点后才定义的函数,在调用点前应该简单声明一下函数原形,以完成代码生成工作。似乎从c编译器的角度领会到为什么很多c代码都要在代码前部声明一下函数原形再开始调用了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值