Objective-C第六版第12章----Preprocessor

本章主要讲述OC的预处理功能。

1. #define 

1)#define TRUE 1

#define PI 3.142592654

后面最好不要有;号。因为它会把;号也加到TRUE里。

2)#define没有local一说。都是定义在最外面。

3)预定义符号:M_PI

4)#define的好处。 定义常量,如果需要修改的时候只需修改一处即可。

5)可以包含表达式

#define TWO_PI 2.0 * 3.141592654

6)#define AND && //还可以定义替换操作符

7)还可以使用前面定义好的define.

#define PI 3.141592654 

#define TWO_PI 2.0 * PI

PI 放在后面也可以。

8)还可以这样玩

#defin IS_LEAP_YEAR year % 4 == 0 && year % 100  != 0 \

|| year % 400 == 0

if(IS_LEAP_YEAR) ...

判断是否是闰年。

或者加参数

#defin IS_LEAP_YEAR(y) y % 4 == 0 && y % 100  != 0 \

|| y % 400 == 0


9)定义经常叫 macros

#define SQUARE(x) x * x

y = SQUARE(V) 执行没有问题

y = SQUARE(V + 1)执行有问题, 它会这样执行 y = v + 1 * v + 1

需要改成

#define SQUARE(x) ( (x) * (x) )

10)还可以玩这样

#define MakeFract(x, y) ([Fraction alloc]  initWith: x over: y])

myFract = MakeFract(1, 3)


2 #import 

通常用来导入头文件

1)也可以定义一个头文件。把需要用到的所有#define都放进去。

但是#import必须放在所有#define之前。

2)#define <Foundation/Foundation.h>尖括号用来导入系统头文件。

3)@import 被看做modules。 导入迅速而且避免命名冲突。


3. conditional compilation 条件编译

1)使用#ifdef #endif #else, #ifndef

#ifdef IPAD

# define kImageFile @"barnHD.png"

#else

# define kImageFile @"barn.png"

#endif

2)还可以用它来标示log为了调试用。

#ifdef DEBUG

NSLog(@"User name = %@, id = %i, userName, userId);

#endif

3)更为简单的#if #elif


4. #undef

取消定义



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值