美文网首页
iOS带多次使用参数的宏定义

iOS带多次使用参数的宏定义

作者: 喵子G | 来源:发表于2019-10-10 11:37 被阅读0次

当我完成了一个简单的快捷返回UIColor的宏之后:

#define KColor(r,g,b,a) [UIColor k_colorWithRed:r green:g blue:b alpha:a]

突然又想到实际开发中经常需要使用到灰色,而UIColor默认只能返回几种默认的几个固定的灰色,不如自己在创建一个灰色的宏:

#define KColorGray(x) KColor(x,x,x,1)

看了一秒钟发现不对,这么写肯定有问题,比如下面的情况:

NSInteger gray = 100
self.view.backgroundColor = KColorGray(gray += 50);

本来期望的颜色是r:150,g:150,b:150,实际上的颜色是r:150,g:200,b:250,因为宏的定义本质是替换,上面实际上是这样的:

self.view.backgroundColor = KColor(gray += 50,gray += 50,gray += 50,1);

所以为了防止这样情况,需要这么写:

#define KColorGray(x) ({\
    NSInteger __color = (x);\
    KColor(__color,__color,__color,1);\
})\

相关文章

  • iOS带多次使用参数的宏定义

    当我完成了一个简单的快捷返回UIColor的宏之后: 突然又想到实际开发中经常需要使用到灰色,而UIColor默认...

  • iOS - 《系统宏》宏,预处理命令

    在ios中使用预处理命令[C语言的特殊命令] 1.宏定义 #define 与 #undef 2.带参数宏定义 3....

  • 准备:回顾c

    宏定义 关键字 define 定义一个常量的方法(即宏定义) 带参数的宏定义 宏函数的定义 使用宏函数的好处是,不...

  • C语言预处理命令的使用

    预处理命令 定义和使用宏 没有参数的宏 输出如下: 带参数的宏 输出和上一节相同。 可选参数 使用省略号...表示...

  • 2018-11-07 宏定义提高可读性

    使用宏定义封装判断条件和读写函数,使代码可读性提高不少。带参数的宏定义,参数只能全词匹配。 明天继续函数和宏定义封装。

  • 5月31

    今天学习了宏定义 宏定义分为:不带参数的宏定义和带参数的宏定义,不占用任何内存空间,宏定义时不加分号。 #defi...

  • 精解C语言预处理命令(三)之“宏”的用法二

    关于C语言带参数的宏定义中的参数 C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实...

  • Day12

    预处理指令 宏定义 基本格式 不带参数的宏定义 带参数的宏定义 宏定义的作用域 条件编译 基本格式 应用场景用来替...

  • const修饰全局变量取代宏定义

    const修饰全局变量取代宏定义 宏定义 C系程序中广泛使用宏定义,宏只是一种简单的字符串替换,根据是否带参数分为...

  • 宏定义与常量的基本用法

    宏定义 宏定义分为两种:带参定义与无参定义 带参定义 无参数定义 常量定义 常量定义也分为两种:全局与局部(相对整...

网友评论

      本文标题:iOS带多次使用参数的宏定义

      本文链接:https://www.haomeiwen.com/subject/krmopctx.html