您的位置:首页 > 其它

typedef和define的区别以及枚举和#define的区别

2016-07-26 17:04 357 查看
一、枚举与#define的区别

        枚举可以使整型数据,define为任意类型的数据

        1、从处理过程角度看

               #define宏定义是在预编译处理阶段时处理的处理的,只做简单的字符串替换,枚举常量则是在编译的时候

        确定其值

        2、从数据类型看

              #define可以编译任意类型的常量,而枚举只能定义整型常量

        3、从代码编写角度看

              枚举可以一次定义大量的常量,而#define宏一次只能定义一个

        4、枚举的取值范围已经限定了,容易进行参数的检查,而#define则没有这种检查

二、typedef与define的区别

        1、在执行时间上

              typedef在编译时处理,有类型检查;#define在预处理阶段进行简单的字符串替换,不进行任何检查

        2、功能上

              typedef用来定义类型的别名,定义与平台无关的数据类型;#define不只是可以为类型取别名,还可以定义常

        量、变量等

        3、作用域上

              #define没有作用域限制,定义过的宏在之后的程序都可以调用;typedef有自己的作用域(在定义函数内)

        4、对指针操作上

              typedef int*pint;

              #define PINT int*

              int i1 = 1;

              int i2 = 2;

              const pint P1 = &i1;
//p不可以更改,p指向的内容可以更改

              const PINT p2 = &i2;
//p可以更改,p指向的内容不可以更改
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: