Objective-C第六版第12章----Preprocessor
来源:互联网 发布:禁用的网络怎么恢复 编辑:程序博客网 时间:2024/06/14 16:28
本章主要讲述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
取消定义
- Objective-C第六版第12章----Preprocessor
- Objective-C第六版第11章---Categroies and delegate
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第六章 选择结构
- Objective-C 预处理器(The Preprocessor) 宏
- Objective-C 程序设计 第六章
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第六章 选择结构 课后题6-4&6-6&6-7
- C.Primer.Plus(第六版)第12章 队列模拟
- C.Primer.Plus(第六版)第12章 编程练习
- Programming in Objective-C 学习笔记06 —— Preprocessor
- C preprocessor
- C preprocessor
- C preprocessor
- 《Objective-C基础教程》第12章 类别
- Objective-C第2版第9章 内存管理
- Objective-C第六讲-多态性
- 复习C语言———《C Prime Plus(第六版)》 第8章~第12章
- C.Primer.Plus(第六版)第10章 编程练习
- C.Primer.Plus(第六版)第11章 编程练习
- jquery attr和css属性
- protobuf简介
- JSP中的TAG
- SVN clean Up 失败处理方法
- 寻找IP的命令行方法!
- Objective-C第六版第12章----Preprocessor
- 判断点是否在多边形内的算法
- c#获取计算机制造商信息
- VS2008 生成DLL加载DLL
- Bash学习手册
- static 总结(表格)
- HMM 隐马尔可夫模型
- Java把字符串中的unicode码替换成相应的字符
- Input Layout