define和typedef的区别

转载 2007年09月11日 15:58:00
define和typedef的区别
2007-04-03 15:02
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:
#define PI 3.1415926
程序中的:area=PI*r*r 会替换为3.1415926*r*r
如果你把#define语句中的数字9 写成字母g 预处理也照样带入。

2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition。

3)typedef int * int_ptr;
与#define int_ptr int *
作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行简单的替换,而typedef不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。也就是说;
#define int_ptr int *
int_ptr a, b; //相当于int * a, b; 只是简单的宏替换

typedef int* int_ptr;
int_ptr a, b; //a, b 都为指向int的指针,typedef为int* 引入了一个新的助记符

这也说明了为什么下面观点成立
typedef int * pint ;
#define PINT int *

那么:
const pint p ;//p不可更改,但p指向的内容可更改
const PINT p ;//p可更改,但是p指向的内容不可更改。

pint是一种指针类型 const pint p 就是把指针给锁住了 p不可更改
而const PINT p 是const int * p 锁的是指针p所指的对象。

3)也许您已经注意到#define 不是语句 不要在行末加分号,否则 会连分号一块置换。
 

typedef和#define究竟有什么区别?

typedef int * int_ptr ; 与#define int_ptr int * 作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行...
  • Pwiling
  • Pwiling
  • 2015年08月16日 21:20
  • 1310

typedef 与 define 区别

这两个我以前也没有很大的关注过这之间还有什么大的区别,不过在书上看见了还是想记录一下,毕竟这是自己不知道..... 关于这两者的用法如下: typedef int* int_ptr #de...
  • ccjjnn19890720
  • ccjjnn19890720
  • 2011年09月20日 12:58
  • 560

(编程基础)define和typedef的区别

define和typedef有两个主要的区别: (1)可以使用其他类型说明符对宏类型名进行扩展,但是对typedef所定义的类型名不能扩展 (2)在连续的几个变量的声明中,用typedef定义的类...
  • lele_cheny
  • lele_cheny
  • 2013年11月26日 15:34
  • 429

#define和typedef在定义指针类型上的优劣

#define和typedef在定义指针类型上的优劣先说下结论:typedef更佳。下面看看代码分析:typedef char *ptr_to_char; char c = 'A'; ptr_to_c...
  • FIRE_TRAY
  • FIRE_TRAY
  • 2016年04月26日 20:38
  • 456

using和typedef区别

在普通的类型名定义时,理论上讲二者是没有区别的,标准上是这样说的: A typedef-name can also be introduced by analias-declaration. The...
  • fpcc
  • fpcc
  • 2017年01月17日 14:19
  • 1115

一定要知道的 typedef 和 #define 的区别 精简

例如: typedef char * String_t; #define String_d char * typedef char *String_t 定义了一个新的...
  • Crazy_Tengt
  • Crazy_Tengt
  • 2018年02月01日 15:55
  • 19

typedef typeof define区别认识

(1) typedef 作用是为一种数据类型定义一个新的名字,可以是内部数据类型(char,int等),也可以是自定义的数据类型(struct,void (*myfunction)(),char *等...
  • u012398613
  • u012398613
  • 2014年04月04日 17:03
  • 2169

const和#define之间的区别,typedef和#define之间的区别

const和#define之间的区别 const推出的目的是为了取代预编译指令,消除它的缺点,同时继承它的优点。 (1)编译器处理的方式不同。   define是在预处理阶段展开;   con...
  • slforeverlove
  • slforeverlove
  • 2015年07月29日 17:01
  • 486

#define的用法及与typedef的区别

C++中#define的用法 1、define--(无参数宏定义)用法     一般形式为:#define     标识符 字符串     (1)"#"表示其为预处理命令,凡是以"#"开头...
  • FOR_PEACE
  • FOR_PEACE
  • 2017年02月23日 20:36
  • 152

typedef,#define与sbit

typedefy typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名。 (1)一方面直接用uint代替 unsigned int.另一方面,它增强了程序的可移植性,因为有的...
  • sinat_38816924
  • sinat_38816924
  • 2017年11月23日 17:10
  • 261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:define和typedef的区别
举报原因:
原因补充:

(最多只允许输入30个字)