【好程序员笔记分享】——编译预处理

来源:互联网 发布:小米nas网络私人云存储 编辑:程序博客网 时间:2024/05/29 14:53

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的objective-c笔记,期待与您交流! 

预处理,就是在编译之前做的事情,所以预处理也叫预编译。预处理是Objective-C提供的一个重要功能。本章主要介绍编译预处理的3种指令:宏定义、“文件包含”处理及条件编译。

一·宏定义

在Objective-C程序中,允许用一个标识符来表示一个字符串,称为宏,被定义为宏的标识符称为宏名。Objective-C中的宏定义是通过“#define”实现的,主要分为两种:不带参的宏定义和带参的宏定义。

1·不带参宏定义

无参宏是指在宏名后面没有参数。自定义宏是要以“#define”开头。

#define 标识符 字符串

“define”为宏定义命令,“标识符”为宏名,“字符串”可以是常量、变量、表达式等。

2·带参宏

所谓带参宏就是在宏名后面加上了参数并且用括号将这些参数括起来。

定义:在宏定义时的参数称为形式参数。

带参宏的调用:当我们对带参宏定义好以后就要对其进行调用,在宏调用时的参数称为实际参数。

宏名(参数)

3·使用宏的注意点

1)宏名和字符串之间是不可以有等号的

2)在define前面必须要有“#”号。如果在define前面缺少了“#”号,就会出现错误提示信息

4·宏的取消

宏定义必须写在方法之外,其作用域为宏定义命令起到程序结束

如果我们想在程序的某一个地方终止宏的作用域,就要使用#undef命令:#undef 宏名

二·文件包含

所谓“文件包含”处理,是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件中。文件包含是Objective-C预处
理程序的另一个重要的功能。Objective-C提供了#import命令用来实现“文件包含”的操作。

注意点:

1)当一个文件在另一个文件中时,文件包含是不可以缺少的。如果缺少了文件包含,程序就会出现错误提示信息

2)一个#import对应一个文件。如果大家为了省事,将多个文件放入一个#import文件中就会出现警告提示信息

3)在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的

4)被包含文件与包含文件在预编译后已成为同一个文件,而不再是两个文件了

3·条件编译

条件编译的三种形式:#ifdef命令、#ifndef命令及#if命令

1)#ifdef


它的作用是当标识符已经被定义过(一般使用#define进行定义),就对程序段1进行编译,否则编译程序段2

2)#ifndef


它的作用是当标识符没有被定义时,就对程序段1进行编译;当标识符被定义过,就对程序段2进行编译。

3)#if

#if预处理程序语句提供控制条件编译的更加通用的方法。



,它的功能是检测常量表达式是否为非零。如果表达式的值为非零,就会处理到所有的后续编译语句,即程序段1。

小结:主要介绍了Objective-C预处理器,它是一个强大的工具,用于编写在编译时改变代码的代码。使用预处理器,我们可以做各种各样的事情。重点是使用#if、#ifndef、#ifdef编写一些条件编译时的代码。


0 0
原创粉丝点击