Object-C学习(七):预处理程序

预处理程序

预处理程是OC编译过程的一部分,用来识别散布在程序中的特定语句,是在分析OC程序之前处理这些语句。预处理程序语句使用“#”号标记,而且这个符号必须是一行中第一个非空语句。


#define语句

它的也叫做宏定义,基本用途就是给符号名称指定程序常量。分为带参数和不带参数两种格式。

1.不带参数:

基本格式如下:

           #define   标示符   值

在oc中我们经常碰到TRUE和FALSE两个值,其实就是foundation框架已经定义好的标示符:

          #define    TRUE   1

          #define    FALSE   0

所以我们在随后的程序中可以直接用TRUE和FALSE标示符来替换1和0;

           if(gameOver == true)

           {

                           ……

           }

#define经常放在程序的开始,#import或#include语句之后。这并不是必须的,它可以出现在程序的任何地方,但必须出现在引用它的语句之前。


值的定义不经包括简单的常量值,还可以包括表达式和其他任何内容:

          #define    TWO_PI   2.0*3.1415926

直接可以替换下面程序中 2.0*3.1415926.

2.带参数:

在标示符紧接着后面可以加一个括号,在括号内可以定义参数值。

           #define    IS_LEAP_YEAR(y)    y%4 == 0 && y%100 != 0 || y%400 == 0

这里定义 IS_LEAP_YEAR(y)判断我们输入的年份是不是闰年:


           if( IS_LEAP_YEAR(2008) )

               ……


条件编译:

条件编译通常用于创建可以在不同计算机系统上编译运行的程序,还经常用来开关程序中的各种语句。

#ifdef 、 #endif 、 #else 和#ifndef语句


           #ifdef  IPAD

           #    define  kImageFile   @"barnHD.png"

           #else

           #    define  kImageFile    @"barn.png"

           #endif

上面例子的说明如果我们已经为预处理程序定义过IPAD,就将kImageFile定义为@"barnHD.png",否则为@"barn.png"。#endif为结束判断。

还有一种用途就是当我们在调试的时候想要执行一段代码,而在实际运行中又不希望这段代码运行,我们可以这样做:

           #ifdef  DEBUG

             要运行的代码块

           #endif


#ifndef语句与#ifdef语句类似,只是判断是相反的,#ifndef是判断 如果预处理程序没有定义标示符则运行,反之则不运行。


#if 和 #elif语句

#if预处理程序语句为控制条件编译提供了更通用的方法。可以用来监测常量表达式是否为非零,如果为非零,就会处理#else、#elif或者#endif为止后续行。


#undef

#undef是用来取消取消宏定义的。而且可以控制宏定义的作用域。

比如:

#define  IPAD

……

#undef

此时,IPAD的作用域到#undef就结束了,如果没有#undef则IPAD的作用域可以保持到程序结束。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值