码迷,mamicode.com
首页 > 移动开发 > 详细

IOS开发学习笔记008

时间:2015-04-14 19:17:54      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

预处理

 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 今日如此,明日依旧。

IOS开发学习笔记008

标签:

原文地址:http://www.cnblogs.com/songliquan/p/4425706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!