C-typedef和define的区别

在C语言中,typedef和define都可以设置变量的别名,但是typedef被视为一种彻底的封装,为类型引入一个别名,声明之后不能再往里面加入别的东西,宏则不然。

1. define可以进行扩展但是typedef不行(note1)

#define peach int
unsigned peach; //OK

typedef banana int
unsigned banana; //NOK

2. define在连续定义中定义与typedef不同

#define apple char*
apple val1, val2; //val1 is char*, val2 is char

typedef apple char*
apple val1, val2; // val1 and val2 are all char*

Note1: 根据C++ primer p104, 所谓的不行并不是说会引起编译错误,而是结果不符合常规: 

typedef char* cstring

extern const cstring cstr; //equal to char* const cstr, NOT constr char* cstr

  

posted on 2013-03-20 22:21  醉清风JM  阅读(163)  评论(0)    收藏  举报

导航