在Xcode 查看预处理及预编译阶段“宏”Marcos

本文摘自ReactiveCocoa 中奇妙无比的“宏”魔法

对于编译语言来说,所有的宏都是在预编译的时候被展开的,所以在lex进行
词法扫描生成Token,词法分析过程之前,所有的宏都已经被展开完成了。

对于Xcode,预处理或者预编译阶段是可以直接查看的。

image

随便写一个宏,然后打开Xcode右上方的Assistant,选择“Preprocess”就可以看到该文件预处理之后的样子了。可以看到左边的@weakify(self) 被转换成了右边的两行代码了。

关于这个Xcode的这个功能还有2点补充说明:

1.不同阶段的Preprocessed可能不同,要根据你的目标去选择预处理的条件。

image

比如这里就有5种预编译的种类可以选择。

2.宏经过预编译之后出来的代码,是可以用来检测宏写的是否正确的,但是无法看到宏被展开的具体过程。这意味着我们可以通过Xcode这个功能来查看宏的作用,但是无法知道宏的具体实现。具体实现还是需要通过查看源码来分析。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 在ReactiveCocoa 中,开源库作者为我们提供了很多种魔法,“黑”魔法,“红”魔法……今天就让先来看...
    一缕殇流化隐半边冰霜阅读 9,098评论 20 97
  • C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行...
    白水灬煮一切阅读 1,646评论 0 5
  • 目录 一.预处理的工作方式... 3 1.1.预处理的功能... 3 1.2预处理的工作方式... 3 二.预处理...
    朱森阅读 1,432评论 0 2
  • 宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可...
    你好自己阅读 1,061评论 0 5
  • 有人说我去别的公司挣到钱,再来做安利,他妈的有毛病啊! 安利这么多年,还有那么多公司进来,代表直销一定要做啊,那就...
    乔峰amway阅读 2,504评论 0 0