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

来源:互联网 发布:网络编程书籍 编辑:程序博客网 时间:2024/06/08 00:18

一、枚举与#define的区别

        枚举可以使整型数据,define为任意类型的数据
        1、从处理过程角度看

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

        确定其值

        2、从数据类型看
              #define可以编译任意类型的常量,而枚举只能定义整型常量

        3、从代码编写角度看
              枚举可以一次定义大量的常量,而#define宏一次只能定义一个

        4、枚举的取值范围已经限定了,容易进行参数的检查,而#define则没有这种检查
二、typedefdefine的区别
        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指向的内容不可以更改

0 0