iOS 宏定义

参考博客:https://mp.weixin.qq.com/s/qTFLZFL2IAz1ScrV1u313Q

宏分为两种:Object-like 宏和Function-like 宏

Object-like 宏:

1、在宏定义时,通常宏的名称都是用大写字母表示,如果要换行就在行末使用\断行。

2、在调用宏时,预处理器在替换宏的内容时会继续检查宏的内容本身是否也是宏定义,如果是,会继续替换宏定义的内容,直到全部展开。

3、宏定义以最后有效的定义为准。

例如:

#define M_PI 3.14159265358979323846264338327950288

#define MAX(a,b) ((a)>(b)?(a):(b))

#undef 宏名称:可以取消宏定义。

Function-like 宏:

1.在“()”里可以添加参数,以“,”分隔

2.使用 “#” 预处理操作符来实现将宏中的参数转化为字符(串),这个操作会将参数中的所有字符都实现字符(串)化,包括引号,如果参数中间有很多空格,字符(串)化之后将会只用一个空格代替。

3.使用 “##” 操作符可以实现宏中token的连接

可变参数的宏:__VA_ARGS__

__VA_ARGS__:总体来说就是将左边宏中 ... 的内容原样抄写在右边 __VA_ARGS__ 所在的位置。它是一个可变参数的宏,是新的C99规范中新增的。

例如:

#define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); }

可以用来把block调用的参数传递过去;

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

推荐阅读更多精彩内容

  • 初学ios不久时间,对ios的宏定义充满好奇,宏的各种高级用法让ios代码变得优雅,那么宏究竟是什么,让我来花时间...
    林帅并不帅阅读 5,979评论 4 1
  • http://www.open-open.com/lib/view/open1390651437117.html ...
    Xtuphe阅读 5,028评论 0 10
  • 1. 宏定义简介 宏定义是使用#define将某段代码、字符串等一串的文字,用一个宏来代替的一种预处理方式。 2....
    Job_Yang阅读 8,148评论 0 3
  • 1 weakself和strongself #ifndef weakify #if DEBUG #ifhas_fe...
    涐罙擁那嗰懂涐阅读 3,952评论 1 1
  • 读了6个故事,有一句话特别触动我,真正的帮助别人,应该是传递智慧,给别人一个升华心灵,证得智慧的助缘。 真的,这句...
    心我听你说阅读 2,839评论 0 0