IOS开发学习笔记008

预处理

1、宏定义

2、条件编译

3、文件包含

注意:

  1、所有预处理都是以#开头,并且结尾不用分号.

  2、宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误

  3、作用域也是从定义到代码块结束

  4、定义一个宏时可以引用已经定义的宏名

  5、在编译预处理用字符串替换宏名时,不作语法检查,只是简单的字符串替换。只有在编译的时候才对已经展开宏名的源程序进行语法检查

一、宏定义

  1、不带参数的宏定义

  #define 宏名 字符串

  #define COUNT 6  

  2、带参数的宏定义

  #define 宏名(参数列表) 字符串

  #define sum(va,vb) ((va)+(vb))

  注意:每个参数都要加括号,运算结果也要加括号

若需要提前取消宏定义可用 #undef COUNT实现。

  代码示例

 1 //宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误
 2 //1、宏定义1,不带参数的宏定义,常用来定义常量
 3 #define COUNT 6//后面么有‘;‘
 4
 5 #include <stdio.h>
 6 //1、宏定义2,带参数的宏定义,每个参数都要加括号,运算结果也要加括号
 7 #define sum(v1,v2) ((v1)+(v2))
 8
 9
10 int main()
11 {
12     //1、宏定义使用
13     int array[COUNT] = {1,2,3,4,5,6};
14     for (int i = 0; i < COUNT; i++)
15     {
16         printf("%d ",array[i]);
17     }
18 #undef COUNT    //提前取消宏定义
19     //带参数的宏
20     printf("\n%d\n",sum(10,20));
21     printf("%d\n",sum(3,3)*sum(4,4));//这样实际运行效果是3+3*4+4=19,因为宏只是简单的文本替换,所以定义时加()比较好
22
23     //2、条件编译
24
25
26     return 0;
27 }

二、条件编译

满足条件就对代码进行编译,否则不编译。

#if 条件1

 .....

#elif 条件

  ......

#else

  .....

#endif//不可缺少

1 #define COUNT 6//后面么有‘;‘
2   //2、条件编译,一般判断宏的值,不能对变量进行操作
3 #if(COUNT  == 6)
4     printf("条件编译:%d\n",COUNT);
5 #elif (COUNT  == 4)
6
7 #else
8
9 #endif//不可缺少

#if defined()和#if !defined()的使用

#if defined(COUNT)//COUNT是一个宏,如果定义这个宏就执行下面的代码 ...code...#endif
#if !defined(COUNT)//COUNT是一个宏,如果没有定义这个宏就执行下面的代码 ...code...#endif
代码:
1 //#if defined()和#if !defined()的用法
2 #if defined (COUNT)//如果定义宏就编译下面代码,否则不编译
3     printf("defined:%d\n",COUNT);
4 #endif
5
6 #if !defined (COUNT1)//如果定义宏就编译下面代码,否则不编译
7     printf("! defined\n");
8 #endif
 

#ifdef和#ifndef的使用

#ifdef COUNT//COUNT是一个宏,如果定义这个宏就编译下面的代码
  ...code...
#endif

#ifndef COUNT//COUNT是一个宏,如果没有定义这个宏就编译下面的代码
  ...code...
#endif
代码:
1 //#ifdef和#ifndef的使用
2 #ifdef COUNT//如果定义宏就编译下面代码,否则不编译
3      printf("ifdef:%d\n",COUNT);
4 #endif
5
6 #ifndef COUNT1//如果定义宏就编译下面代码,否则不编译
7     printf("ifndef\n");
8 #endif

三、文件包含

#include

#include <>//系统头文件

#include ""//自定义的头文件

文件包含可能会重复包含同一个文件,这是可以再要包含的文件中添加一个宏定义,用于消除重复包含。

格式如下  

  #ifndef A_H

  #def A_H

    ..........

  #endif

这样即使多次#include同一个头文件也不会产生文件的重复性包含

2015-4-14 今日如此,明日依旧。

时间: 2024-10-29 04:46:57

IOS开发学习笔记008的相关文章

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.

IOS开发学习笔记(2)-----UIButton 详解

1. [代码][C/C++]代码     //这里创建一个圆角矩形的按钮    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //    能够定义的button类型有以下6种,//    typedef enum {//        UIButtonTypeCustom = 0,          自定义风格//        UIButtonTypeRoundedRect,        

IOS开发学习笔记--语音合成(科大讯飞)

      现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便.说到语音服务,Google和微软都提供过API接口,不过笔者要介绍的是国内的智能语音技术提供商---科大讯飞.之前看过一个比较Google.微软和科大讯飞语音识别引擎的博文(http://fqctyj.blog.163.com/blog/static/70843455201361955322797/),有兴趣可以去看看.笔者接触语音服务的时间也不长,对语音服务也不是很了解,但是拆解过科大讯飞的Dem

IOS开发学习笔记017-什么是IOS开发

应用程序开发流程 1.IOS开发需要思考的问题 用户是谁?不同应用程序的内容和用户体验大不相同,这取决于想要编写的是什么应用程序,它可能是儿童游戏,也可能是待办事项列表应用程序,又或者是测试自己学习成果的应用程序. 应用程序的用途是什么?赋予应用程序一个明确的用途十分重要.了解激发用户使用应用程序的动因是界定用途的一个出发点. 应用程序尝试解决什么问题?应用程序应该完美解决单个问题,而不是尝试解决多个截然不同的问题.如果发现应用程序尝试解决不相关的问题,那么最好考虑编写多个应用程序. 应用程序要

ios开发学习笔记(1)

objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//1.从Infor.plist中取出版本号NString *version = [NSBundle mainBundle].infoDictionary[key];//2.