iOS 预编译语句/指令

预处理指令的种类:

文件包含、宏定义、条件编译

 

1.文件包含:

OC中一般使用#import,而C语言下通常使用include

区别在于#import 不会导致重复引用。

OC中还有个@class关键字,一般用于头文件声明。

 

2.宏定义:

不含参数

#define kScreenWidth [UIScreen mainScreen].bounds.size.width

#define kScreenHeight [UIScreen mainScreen].bounds.size.height

带有参数:

#define kScreenRatio (kScreenWidth/kScreenHeight)

#define max_int(a,b) 2+3

需要注意:宏定义的本质是替换,所以在做逻辑运算的时候要小心,应该在适当的位置上加上括号,否则可能会出现意料外的结果:

#define max_resut max_int*max_int

结果是11

而我们预期的结果是5 * 5 = 25

那么我们替换一下:2+3*2+3 = 11

所以请记得按照逻辑运算优先级适当的加上括号。

 

宏的拼接

#define a @"123"

#define b @"456"

#define c a@" "b

NSLog(@"%@",c);

log:123 456

 

宏的连接处理

如果想在含参数宏中包含参数本身:

#define MAX_LOG(logParam) NSLog(@"lalala testLog"#logParam"end",logParam * 2)

执行:

MAX_LOG(10)

结果:

log:lalala testLog 20end

 

宏定义的换行

在末尾加上反斜杠就可以了

 

3.条件编译

条件编译则是在编译之前,由预处理器判断范围内代码是否满足条件来确认是否将其编译进去。

常见条件编译:

#if //基本等于C中的if

#ifdef //后跟宏的名称 意思是 ‘如果定义了宏’,则执行其后的语句

#ifndef //与上一条相反,如果未定义,则执行其后的语句

#elif //上述条件语句条件都不符合,或前面的elif语句也不符合,则执行其后的代码

#else //...就是C里的else

#endif //结束标志

注意哈:#if是判断后面的条件 #ifdef 是判断后接的宏是否被定义

 

 

 

 

转载于:https://www.cnblogs.com/LPA4/p/10137140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值