当前位置:   article > 正文

iOS 开发 高级:使用 宏定义macros (#,##,...,__VA_ARGS_)_ios 宏## 拼接

ios 宏## 拼接

    一直以来用宏定义#define也就是定义一些简单的常量,至多也就是定义一个函数,很少关注宏定义的用法。直到看到这样的代码:

  1. #define PLAYSOUNDEFFECT(...) \
  2. [[GameManager sharedGameManager] playSoundEffect:@#__VA_ARGS__]


这么强大的用法以前从来没有想过。看一下iOS Framework的一些头文件,发现几乎全部都是宏定义:


不得不说宏定义很强大!宏定义的使用使得程序的编写更加的简便!

作为iOS开发者,有必要深入研究一下宏定义的用法。


最官方的关于宏的使用说明网址是:http://gcc.gnu.org/onlinedocs/cpp/Macros.html#Macros

在Apple的官网上可以找到GNU C 4.2 Preprocessor User Guide,发现和GNU官网的说明一模一样。因为Xcode的编译器就是基于GNU C 4.2预处理器,因此在Objective-C的开发环境中使用宏和在C/C++中使用是一模一样的。


下面的文字是阅读官方使用说明后的总结及翻译。(代码直接从官方使用说明摘录)


1、Macros 宏

官方解释:

macro is a fragment of code which has been given a name. Whenever the name is used, it is replaced by the contents of the macro. There are two kinds of macros. They differ mostly in what they look like when they are used. Object-like macros resemble data objects when used, function-like macros resemble function calls.

有两种宏的类型,一种是类对象的宏,封装使用的数据对象,另一种是类函数的宏,封装函数的调用。在ObjC里面,那就是可以封装Method的使用,如文章一开始的代码


1.1 类对象的宏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/223752
推荐阅读
相关标签
  

闽ICP备14008679号