有关#define和typedef

来源:互联网 发布:阿里数据库在哪里 编辑:程序博客网 时间:2024/06/05 03:26

Differences 1

description

可以用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能

example

#define velscode intunsigned velscode i; /* no problem */typedef int velscodeunsigned velscode int; /* Error! */

Difference2

description

在连续的几个变量声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型,而#define无法保证这一点。

example

#define int_ptr int *int_ptr a,b; /* have some problems */typedef int * int_ptr;int_ptr a,b; /* no problems */

在#define中,经过宏扩展,第二行被展开为

int * a, b;

这使得a和b成为了不同的类型,a是一个指向int的指针,而b是一个int类型

reminder

typedef是一种彻底的“封装”类型

原创粉丝点击