在objective-c中,有一种类似于jsp小脚本的东西,叫做宏。这种东西实际上就是在编译是才对实际使用的值与对象进行确认,主要针对的是编译过程。
预编译的一个使用是
#define 宏名称 值
在以上是定义一个类似于内存的东西。宏名称是自定义的。可以等同于变量名,有不成文的约定是使用全部大写的字母。 后面的值可以标量,也可以函数代码。非常灵活
当定义好了以后。这就是一个预编译常量。开始在代码的任何地方使用。
以上只是一个最基本的还可以这样使用
#define 宏名称(X,Y) NSLog(@"",(X),(Y));
这样。只需要在下面的代码中调用如下
宏名称(1,2);
即可调用以上的打印;
还有以下专门为宏准备的内置宏变量
__FILE__ 获取当前执行文件位置
__LINE__ 获取当前调用行数
__DATE__ 获取当前日期
__TIME__ 获取当前时间
这些都是在编译时获取的。所以自定义的变量不可使用"__"开头和结尾
前面讲过宏不仅可以定义常量,还可以定义函数。那么当函数不是一行时。可以使用 +enter 来实现多行函数
还有一个小技巧是。可以获取一个变量的变量名
#define 宏名称(value) NSLog(@"%s---%@",#value,value);
如上:#value打印出来的是变量的变量名称,value可以打印出变量的值。用于内部检查非常适合。
最后介绍的是
#ifdef 宏名称
code
#else if 宏名称
code
#else
code
#endif
这样就可以实现在预编译阶段区分一些代码。如果是测试环境,和正式环境区分使用就可以通过这个方法来实现。
其实内置宏还有很多。具体使用的时候可以到GCC文档查阅