#define与typedef的区别

来源:互联网 发布:网店优化方案 编辑:程序博客网 时间:2024/06/16 14:35

1.typedef就是类型定义,比如你给一个已经存在的类型(基本类型或者组合类型?)一个别名,
作用:1)简化复杂类型的声明,在常用的地方带上一大串类型名,显得太冗余,为了图方便,用个简单的名称代替:
typedef bool (*FuncPointer)(int ,double);

2)定义与平台无关的类型
对于以前的代码可能在不同的平台上运行,会存在一些差异,为了有更好的可操作性,在不同的平台只需修改小部分;
如:
typedef long double REAL;
在不支持long double 的平台上,可以改为
typedef double REAL;

2.在C语言中与struct一起使用,否则定义的时候就必须带上struct这个关键字

3.与#define的区别
1).执行时间不同
typedef发生在编译阶段,具有类型检查功能;#define 只是在预处理阶段,只进行简单的字符串替换,不进行任何检查;
2).作用域不同
#define不仅仅可以为类型取别名,还可以定义常量、变量、编译开关等;
typedef用来定义类型的别名以及与struct的配合使用;
3)对指针的操作不同
修饰指针时,作用不同;
详情见:http://blog.csdn.net/luoweifu/article/details/41630195

学习数据结构第4天。。。

0 0
原创粉丝点击