请问typedef 和 #define 的区别???

哇哈哈哇哈哈 2005-06-08 05:17:47
请问typedef 和 #define 的区别???

谢谢。
...全文
109 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
foochow 2005-06-08
  • 打赏
  • 举报
回复
typedef是可以封入namespace的
而宏不可以(因为namesapce是编译指令,预处理器根本不认)
#define 是定义一个宏
typedef 则是定义一个数据类型
主要用途不同
nasi00 2005-06-08
  • 打赏
  • 举报
回复
#define 定义一下变量还可以,最好不要用来定义指针类型

类型最好还是用typedef来定义,免得出现上述错误
foochow 2005-06-08
  • 打赏
  • 举报
回复
在编写程序的时候,尽量少用#define,多用typedef。(不绝对的,和程序本身有关,越是大型的程序,越要注意这个)
因为宏定义掌握的不好的话,很容易出现一些预想不到的错误。
比如说:
你写了一个 #define A x
然后再程序里 定义了int A,然后又定义了 int x;(这时你忘了,你已经有一个宏定义,其实int A展开后就是 int x,这样就是重复定义,编译器会报错,这还是好的,编译器会查出来,有些错误是编译器查也查不出来的)

而用typedef对你的程序的可移植性会大大提高。
比如说 你可以定义一个 typedef int INTEGER,这样在程序里INTEGER就代表了int类型,当你的程序要移植时(比如放在64位或者16位的机子上运行时)
那可能你的int类型都要改为long型,这时你就把原来定义的那句改为typedef long INTEGER就可以了,这样就大大增加了程序的可维护性,
所以说对于大型程序typedef还是很有用的,而宏定义却很危险。
foochow 2005-06-08
  • 打赏
  • 举报
回复
mark!!!!
jixingzhong 2005-06-08
  • 打赏
  • 举报
回复
学习~~~~~~~~~~~~~~~

mostideal 2005-06-08
  • 打赏
  • 举报
回复
那就不用再说了。。。顶。。
lonalpha 2005-06-08
  • 打赏
  • 举报
回复
两个人说得不错
zhousqy 2005-06-08
  • 打赏
  • 举报
回复
#define PIN1 int*

typedef (int*) PIN2;

PIN1 a, b; // a是int *型, b是int型.
PIN2 a, b; // a,b都是int *型.
「已注销」 2005-06-08
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/TopicView3.asp?id=3972233
--------------
define与typedef数据类型表示的区别

Daizh



为了简洁和书写方便,我们通常会对数据类型进行类型的表示或别名,通常有两种方法可以实现,即define宏和typedef。

例如:#define STU struct stu在程序中可用STU作变量说明: STU body[5], *p;

#define INTEGER int在程序中即可用INTEGER作整型变量说明: INTEGER a,b;

应注意用宏定义表示数据类型和用typedef定义数据说明符的区别。宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。请看下面的例子:

#define PIN1 int*

typedef (int*) PIN2;

从形式上看这两者相似,但在实际使用中却不相同。下面用PIN1,PIN2说明变量时就可以看出它们的区别:PIN1 a,b;

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧