对于编译语言来说,所有的宏都是在预编译的时候被展开的,所以在lex进行
词法扫描生成Token,词法分析过程之前,所有的宏都已经被展开完成了。
对于Xcode,预处理或者预编译阶段是可以直接查看的。
image随便写一个宏,然后打开Xcode右上方的Assistant,选择“Preprocess”就可以看到该文件预处理之后的样子了。可以看到左边的@weakify(self) 被转换成了右边的两行代码了。
关于这个Xcode的这个功能还有2点补充说明:
1.不同阶段的Preprocessed可能不同,要根据你的目标去选择预处理的条件。
image比如这里就有5种预编译的种类可以选择。
2.宏经过预编译之后出来的代码,是可以用来检测宏写的是否正确的,但是无法看到宏被展开的具体过程。这意味着我们可以通过Xcode这个功能来查看宏的作用,但是无法知道宏的具体实现。具体实现还是需要通过查看源码来分析。
作者:Jacob_LJ
链接:https://www.jianshu.com/p/222ce8bea7ba
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。