Chinaunix首页 | 论坛 | 博客
  • 博客访问: 186284
  • 博文数量: 37
  • 博客积分: 171
  • 博客等级: 入伍新兵
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-13 22:54
个人简介

寻找方向程序猿、攻城狮

文章存档

2023年(1)

2022年(4)

2019年(1)

2018年(1)

2017年(1)

2015年(2)

2014年(19)

2013年(2)

2012年(1)

2011年(5)

分类:

2011-10-23 22:25:24

#define定义一个类型的别名,只是简单的文本替换,在预编译的时候将会被替换为本来面目;而typedef可以看做是一种彻底的封装类型,封装后的类型不能再加上其它限定符加以修饰,但#define却可以。如:

#define it_is_a_type int

unsigned it_is_a_type i; /*这样子是合法的*/

 

typedef int it_is_a_type

unsigned it_is_a_type i;/*这样子是非法的*/

 

#define和typedef另外一处不同的地方是,使用#define定义的类型有可能不能跟多个变量,而typedef能够保证类型别名之后跟多个变量。如:

#define it_is_a_pointer  int*

it_is_a_pointer i,j,k; 预编译处理后,就变成:int* i,j,k;只有第一个是指针,其它都是int类型的数值,这与程序设计者的初衷是违背的。但typedef不会。

typedef int* it_is_a_pointer

it_is_a_pointer i,j,k; i,j和k都是int*类型的变量。

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