1. 宏定义简介
宏定义是使用#define将某段代码、字符串等一串的文字,用一个宏来代替的一种预处理方式。
2. 为什么要使用宏定义
宏定义在很多方面都会使用,例如定义高度、判断iOS系统、判断机型、工具类,还有诸如文件路径、服务端api接口文档。为了对宏能够快速定位和了解其功能,我们最好在定义的时候将其放入特定的头文件中,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,又能减少系统开销。
3. 预处理命令简介
#define: 定义一个预处理宏
#undef: 取消宏的定义
#include: 包含文件命令
#include_next: 与#include相似, 但它有着特殊的用途
#if: 编译预处理中的条件命令, 相当于C语法中的if语句
#ifdef: 判断某个宏是否被定义, 若已定义, 执行随后的语句
#ifndef: 与#ifdef相反, 判断某个宏是否未被定义
#elif: 若#if, #ifdef, #ifndef或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if
#else: 与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句, 相当于C语法中的else
#endif: #if, #ifdef, #ifndef这些条件命令的结束标志.
defined: 与#if, #elif配合使用, 判断某个宏是否被定义
#line: 标志该语句所在的行号
#: 将宏参数替代为以参数值为内容的字符窜常量
##: 将两个相邻的标记(token)连接为一个单独的标记
#pragma: 说明编译器信息
#warning 显示编译警告信息
#error: 显示编译错误信息
4. 宏定义分类
大致分为无参数宏定义与有参数的宏定义:
无参数宏定义:
//定义π
#define M_PI 3.14159265358979323846264338327950288有参数宏定义:
// 获取RGB颜色
#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]