typedef 与 define的区别

来源:互联网 发布:手机淘宝一元秒杀 编辑:程序博客网 时间:2024/06/07 17:13

typedef与define有两个关键性的区别,这会带给我们一些烦恼。但其根本区别就是typedef是个“封装”好的类型,就是在声明类型之后不能再往里面添加其他声明。区别如下:

1)添加其他

#define example int

则:
unsigned example a;
完全没有问题
typedef example int
但会报错

2)连续声明

#define pstr int*    typedef int* pstr2

假如我们连续声明多个变量:

pstr a,b;   pstr2 c,d;

则我们会发现:a,c,d为指向int 的指针而b则是一个int类型的变量,这与我们的本意相悖。
其实,我们将pstr拆开就会明白这是为啥:
对于pstr:

 Int * a,b;

这就是原因。

原创粉丝点击