zoukankan      html  css  js  c++  java
  • 在Xcode 查看预处理及预编译阶段“宏”Marcos

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

    对于编译语言来说,所有的宏都是在预编译的时候被展开的,所以在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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    ------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。
  • 相关阅读:
    从句分析
    artDialog ( v 6.0.2 ) content 参数引入页面 html 内容
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 11 盛最多水的容器
    Java实现 LeetCode 11 盛最多水的容器
  • 原文地址:https://www.cnblogs.com/feng9exe/p/15149891.html
Copyright © 2011-2022 走看看