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指向的内容不可以更改
枚举可以使整型数据,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指向的内容不可以更改
相关文章推荐
- 分页技术
- js常用功能汇总
- 基于LC push的浏览器桌面提醒快速集成方案
- 学习笔记:B树建立,搜索和删除操作
- HTTP的get_post请求方法
- (ros/navigation/gmapping)导航/建地图
- iOS获取当天0点时间
- PHP 魔术方法之 __call 与 __callStatic
- intellj idea15下 新建 Maven 项目
- 归并排序与快速排序
- 巧用js替换某些不能替换的文字
- Android 应用的欢迎界面实现代码
- Java配置环境变量
- excel frequency函数(求不同年龄段人数,求连续工作天数)
- HDU 排序
- css 常用样式
- 重学Statistics, Cha13 Experimental Design and Analysis of Variance
- 《Windows核心编程》之“线程栈”
- hdu3336(next数组的应用)
- 结合友盟统计的多渠道快速打包