OC预处理程序

//
//  Fraction.h
//  OC12预处理程序
//
//  Created by Zoujie on 15/9/17.
//  Copyright (c) 2015年 Zoujie. All rights reserved.
//

//一般预定义常量的替换
#define kTURE 1
#define kFALSE 0
#define PI 3.141592
#define MAXIMUM_DATA_VALUES 1000

//更高级的预定义
#define TWO_PI 2.0 * 3.141592654
#define AND &&
#define OR ||
#define EQUALS ==
#define TWO_PI_Define 2.0 * PI
//带参数
#define IS_LEAP_YEAR(y) y%4 == 0 && y%100 !=0  || y%400==0 
#define SQUARE(x) x * x //运算错误 x代表表达式: x = y + 1
#define SQUARE_TURE(x) ((x)*(x))

#define MakeFract(x,y) ([[Fraction alloc]initWith: x over :y]) //?
#define MAX_TWO_NUMBER(a,b)  (((a)>(b)) ? (a):(b)) //判断两参数大小

#define IPAD //申明

#import <Foundation/Foundation.h>//<>系统头文件

@interface Fraction : NSObject
-(void)defineProduct;
-(double) area;
-(double) circumference;
-(void)initWith:x over:y;
@end
//
//  Fraction.m
//  OC12预处理程序
//
//  Created by Zoujie on 15/9/17.
//  Copyright (c) 2015年 Zoujie. All rights reserved.
//

#import "Fraction.h"

@implementation Fraction
{
    int radius ;//半径
}
-(void)defineProduct
{
    int gameover = kFALSE;
    if (gameover == kFALSE)
    {
        gameover = kTURE;
    
    }
    
    if (gameover >0 AND (gameover <= 1)){}
    if (gameover >0 OR (gameover <= 1)){}
    
}

-(double) area
{
    radius = 10;
    return PI * radius * radius;
}

-(double) circumference
{

    return 2.0 * PI * radius;
    return TWO_PI * radius;
    return TWO_PI_Define * radius;
}

-(void)initWith:(id)x over:(id)y
{

    return ;
}

@end
//
//  main.m
//  OC12预处理程序
//
//  Created by Zoujie on 15/9/17.
//  Copyright (c) 2015年 Zoujie. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Fraction.h"
#import <limits.h>
#import <float.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
      
        if  (IS_LEAP_YEAR(2000))
        {
            NSLog(@"判断闰年");
        }
        
        NSLog(@"%d",MAX_TWO_NUMBER(100, 99));
    }
    return 0;
}

#pragma mark 条件编译

#ifdef IPAD //IPAD 申明就可以
#define kImageFile @"bardHD.png"
#else
# define kImageFile @"barn.png"
#endif

//用于注释
#if 0
#endif

#undef 语句
//使一些已经地宫一的名称成为未定义的
#undef IPAD  //消除IPAD  #ifdef IPAD #if defined(IPAD) 判断都为FALSE
时间: 2024-11-08 13:34:54

OC预处理程序的相关文章

OC基础9:预处理程序

1.  关于#define语句: (1).#define语句的用途就是给某个符号名称指定一个程序要用到的常量,比如: #define TRUE 1 这个语句的意思就是把TRUE指定为1,那么后续的程序中如果需要用到1来做判断或者计算,就可以直接使用TRUE这个符号名称了: (2).预定义名称不是变量,所以不能在程序过程中给它赋值,不能改变它的值: (3).注意#define语句没有用到等号,也不需要分号结尾,如果结尾加上分号的话,那么这个常量的值就会变成你想要的值和一个分号的合并了,即是这个分号

OC的BOOL类型

OC的BOOL类型: BOOL类型其实是由一种称为预处理程序的机制添加的.typedef signed char BOOL; BOOL类型有两个值YES,NO.YES=1,NO=0. 说明:objective-c 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间.通过#define指令把YES定义为1,NO定义为0. 注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理.编译器仍将BO

【《Objective-C基础教程 》笔记】(七)OC的关键字用意小结

1.  #import #import <> 从system目录中查找头文件,不会检查当前目录. #import "" 首先在当前目录中查找,如果未找到,则在Xcode设置的预处理程序搜索路径中查找文件. #import 指令可以防止头文件被重复包含 2. typedef 用于给一个类型定义新名称 或 简化较为复杂的类型声明. 3. #define 用于宏定义预处理. 4. 定义类 *.h 用于定义类的头文件 @interface 类 : 父类 @end *.m Objec

OC 基本语法

1.常见文件扩展名 .c C 语言源文件 .cc..cpp C++ 语言源文件 .m Objective-C 源文件 .mm Objective-C++ 源文件 .h 头文件 .pl Perl 源文件 .o Object(编译后的)文件 .app 可运行的应用程序(相当于 windows 中的 .exe) .dmg OS X 上的光盘文件压缩包(相当于 windows 中的 ISO) .pkg OS X 应用程序安装包(相当于 windows 中的 exe\msi 等) .ipa iOS 应用程

iOS开发——网络编程OC篇&amp;Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

嵌入式&amp;iOS:回调函数(C)与block(OC)传 参/函数 对比

C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

OC内存管理

OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等. 管理范围:任何继承NSObject的对象,对其他的基本数据类型无效. 本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也

关于OC中直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型

关于OC直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型,我们完全可以把其转换为OC对象来进项打印调试,而不必对结构体中的成员变量进行打印.就好比我们可以使用NSStringFromCGRect(CGRect rect)来直接打印一个结构体,其他打印可以参考以下内容 UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UIKIT_EXTERN NSString *NSStringFrom