typedef与define的区别与联系-创新互联

 在C或者C++中,可以通过使用typedef和define来声明新的类型来代替已有的类型。例如:

创新互联公司服务项目包括库伦网站建设、库伦网站制作、库伦网页制作以及库伦网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,库伦网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到库伦省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

typedef int COUNT;

#define COUNT int;

两者的作用都是用COUNT来代表int。虽然两者实现的功能相同,但是实际上却又有很大的差别,要不然也不会同时存在了。下面简单谈一下两者的区别,希望在用到时能够正确的进行选择,以便减少不必要的麻烦:

  1. typedef

       在C或者C++中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间。

    使用方法:(1)先按照定义变量的方法写出定义体(如int n[100];)

            (2)将变量名换成新类型名(如将n->NUM);

             (3) 在最前面加上typedef(如 typedef NUM[100])

            (4)可以用新类型名去定义变量

    在C中还可以用来声明结构体类型:

typedef struct

{ double score;

String name;

int data;

}SCORE

这样就完成了新类型名SCORE的声明,它代表上面指定的结构体类型,接下来就可以用SCORE来定义变量了:   SCORE FIRST;

    SCORE *p;  //p为指向此结构体类型数据的指针

注意:(1)typedef可以声明各种类型名,但是不能用来定义变量。

    (2)typedef只是对已经存在的类型指定一个新的类型名,而没有创造新的类型。

    (3)typedef可有利于程序的通用与移植。例如:不同的硬件平台对int型长度定义是不同的,有            些是2字节,有些是4字节,如果将程序从一个4字节存放整型数据的计算机系统移植到以2字            节存放×××数据的系统,则需要将定义变量中所有的int类型全部换为long类型,但是如果            使用了typedef定义了int型,则只需要更改一处。

2.#define

 为宏定义语句,通常用它来定义常量,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题。

两者区别:

#define是在预编译时处理的,它只做简单的替换。而typedef则是在编译时候处理的,并不是只做简单的替换。例如:

typedef  int NUM[10];

并不是用NUM[10]去代替“int”,二十采用如同定义变量的方法那样来声明一个类型,然后用它来定义变量。


当前题目:typedef与define的区别与联系-创新互联
URL标题:http://hbruida.cn/article/dcisph.html