Chinaunix首页 | 论坛 | 博客
  • 博客访问: 444613
  • 博文数量: 72
  • 博客积分: 3186
  • 博客等级: 中校
  • 技术积分: 1039
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-07 16:53
文章分类

全部博文(72)

文章存档

2012年(1)

2011年(5)

2010年(10)

2009年(56)

我的朋友

分类: C/C++

2009-03-16 13:41:03

1.宏
       可以分为不带参数的宏定义和带参数的宏定义
 

1)不带参
          #define 宏名 字符串

例:#define PI 3.14.5926

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

例: #define MAX(x,y) (x)>(y)?(x):(y)

注意:由于宏只是作单纯的替换工作,所以一定要在必要的时候加上括号。 

PS:宏名代替一个字符串,减少程序中重复书写的工作量。

    只作简单的替换,不作正确性检查,不分配内存空间。

    #define命令出现在函数外面,在定义之后到本源文件结束有效。

    可以引用已定义的宏名,层层置换。

    程序中双撇号括起来的字符串内的字符,不进行置换。

    宏名与参数间不能有空格,空格只出现在字符串之前。

 

2.typedef 定义类型

typedef int NUM[100];

用typedef的方法很简单。例:

a.按定义数组变量形式书写:int n[100];

b.将数组名换成想要的字符:int NUM[100];

c.然后在前面加上typedef:typedef int NUM[100];

d.这样就可以用NUM去定义长度为100的数组了:NUM n;即表示int n[100];

定义变量同理只将变量名换为想要的字符。

如:int i;

则将i换为COUNT,那么typedef int COUNT;

之后就可以用COUNT去定义int类型的变量了:COUNT i;

 

由此可见typedef 与 define的区别是很大的。define只是替换字符而已。

如前面的例子NUM n,就表示int n[100];这点就define就办不到。

 

3.条件编译,这个是很有用的。但我一直没有好好利用它。

1)
#ifdef 标志符
    程序段1
#else
    程序段2
#endif


2)
#ifndef 标志符
    程序段1
#else
    程序段2
#endif


3)
#if 表达式
    程序段1
#else
    程序段2
#endif

1) 2)只需要程序中定义或没有定义标志符而已,而不需要定义出标志符的值。

#define debug //debug表示上面的标志符,随便起个意思下

则就可以控制下面的1)2)的编译情况了。

3)一定要定义出表达式的值才行。如

#define debug 0

注:上面段中的else都是不必要的,只在需要的时候用。

 

4.#include

 

文件包含,一个源文件可以将另一个源文件的全部内容包含进来,放入本文件#include处。

#include "……"

双引号,是先到用户当前目录查找,若找不到,再按标准方式查找。双引号内可引入文件路径

#include <……>

存放C库函数头文件的目录中寻找要包含的文件,是标准方式。

阅读(1556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~