Haxe3增强特性:宏 -- macros

官网英文原文:http://haxe.org/manual/macros

其实从Haxe2.09开始,macros就已经很完善和强大了,不过那时候我对整个Haxe还不够熟悉,因此对macro这么高级的东西就更是敬而远之了。

虽然目前为止还没有实际使用过macros,但这里试图结合官网文档说说自己的肤浅理解:


在C和C++里,你是可以用宏(即#define xxxx)定义一些常量和内联操作的,但是,简单来说C和C++中的宏只是简单的字符串替换功能,是在预编译过程中被处理的,简单应用很简单,但写复杂了却很容易出错,也没法实现更高级的语义级操作。

Haxe的宏则远远不止于此,在我的理解中,Haxe源文件的编译也是分两个阶段的:

首先是宏的解析阶段,这个阶段包含宏的原始代码被处理成抽象语法树 AST (Abstract Syntax Tree),然后运行源码中定义的宏;宏其实也是标准的Haxe代码,但它是被Haxe编译器运行的,这个过程中,宏代码可以访问的并非运行期环境的API,而是宏上下文macro context,可以读取或修改AST上的节点表达式,创建新类型,创建新的Haxe代码,另外也可以通过Haxe标准库来访问本地文件系统,网络等,比如可以对资源文件进行预处理,根据数据文件生成初始化代码等等。

另一个阶段则是标准的编译阶段,这一阶段的输入是宏解析阶段处理后的AST,包括宏创建的代码也都被解析成AST,然后经过编译器后端,被处理成目标平台的源代码或字节码。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值