如何定义一个带参数的宏

开发中我们经常会遇到一些需要封装起来的简单函数

比如说:有两个数,通过调用一个宏去返回较大的数

              或者:通过输入三原色(RGB)的值去输出一个自己的颜色

这中做法比较常用  下面就来说一下这种带参数的宏是怎么定义的


废话不多说 直接上代码:

// 这个宏是输出比较大的一个数
#define swap(a,b) ((a) > (b)? (a):(b))


#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    
        int  a,b;
        
        a = 2;
        b = 4;
        
        NSLog(@"%d",swap(a, b));
        
    }
    return 0;
}

返回值为:


下面是返回颜色的宏

// 获取RGB颜色  ----  注意颜色的名字 不能用 red green blue 这样会造成宏中的重名,导致编译报错
#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
#define RGB(r,g,b) RGBA(r,g,b,1.0f)

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 分别设置背景颜色
    self.view.backgroundColor = RGBA(32, 32, 230, 1);
    self.view.backgroundColor = RGB(230, 23, 23);
}

@end

下面就是 最终设置的颜色 偏红色


关于这种宏的一个小结


这个测试是为下面的目的而设的:

1).标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,

对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

2).三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。

3). 懂得在宏中小心地把参数用括号括起来



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值