objective-c(十)关于宏的使用

  在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文档查阅

  

  

  

  

原文地址:https://www.cnblogs.com/imtodd/p/6678926.html