[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十二章 预处理程序
2015-07-07 15:24
513 查看
Part 1. #define语句
#define语句的基本用途之一是给符号名称指定程序常量。类似于文本编辑器中的搜索和替换。
优点
记忆成本低:不必特意记住常量的值
更改便携性:只需在一个地方更改常量的值
加强程序的可扩展性:定义数组的大小
定义的内容
1.定义整数
#define TRUE 1 // 定义TRUE,并使其等于1。 gameover = TRUE // 将1赋给gameover。
2.定义表达式和其他任何内容
#define TWO_PI 2.0 * 3.1415926 #define AND && #define OR ||
3.预定义的本身可以引用另一个预定义的值
#define TWO_PI 2.0 * PI //顺序可以颠倒 #define PI 3.1415926
4.带有一个或多个自变量的定义
#define IS_LEAP_YEAR(y) y % 4 == 0 && y % 100 != 0 \ || y % 400 == 0 . . if (IS_LEAP_YEAR (year))
Part 2. #import语句
开发的一组宏收集到一个单独的文件(头文件,包含文件)中,然后使用#import语句把它们包含在程序中。
头文件的引用
头文件名两侧是“”:预处理程序首先在包含源文件的目录中查找。但是可以通过修改“项目设置”用Xcode指定预处理程序搜索的确切位置。
头文件名两侧是<>:预处理程序只在特殊的“系统”头文件目录中寻找头文件。
Part 3. 条件编译
条件编译功能:创建可以在不同计算机系统上编译运行的程序。还经常用来开关程序中的各种语句。Part 3.1 #ifdef, #endif, #else 和 #ifndef 语句
#ifdef IPAD //若前面已经定义了 IPAD, 则执行: # define kImageFile @"barnHD.png" #else # define kImageFile @"barn.png" #endif
为预处理程序定义符号IPAD:
#define IPAD 1 //或者 #define IPAD
Part 3.2 #if 和 #elif 预处理程序语句
#if语句用来检测常量表达式是否非零。如果常量表达式的结果非零,机会处理到
#else,
#elif或
endif为止的所有后续行。
Part 3.3 #undef语句
消除特定名称的定义相关文章推荐
- Objective-C - NSObject常用方法
- 【Objective-C Runtime】Objective-C Runtime文章收集
- awr中一条top sql,查询all_objects
- Qt经典—线程、事件与Qobject
- 黑马程序员——Objective-C语言知识整理——类成员变量的设置与获取
- CoreData封装系列一----NSManagedObjectContext多线程
- Objectness 使用小结
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- Objective-C 初始化
- Objective-C Runtime中的并发内存分配
- Objective-C Runtime中的并发内存分配
- [Objective-C] 哪些变量默认初始化为0
- DbContext 和ObjectContext两者的区别
- 深入理解Objective-C的Runtime机制
- [Objective-C] assign/retain/copy 详解
- [Objective-C] 属性中的 atomic/nonatomic/assign/retain/copy/readwrite/readonly 详解
- [Objective-C] @property是不能被“预处理”的,而是直接编译成汇编指令
- Object-Oriented Terms 面向对象术语
- Objective-C 中的 Meta-class 是什么
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十一章 分类和协议