typedef类型定义问题

[复制链接]
2010|5
 楼主| 康康同学 发表于 2013-1-5 11:39 | 显示全部楼层 |阅读模式
本帖最后由 康康同学 于 2013-1-5 11:44 编辑

今天在看ANSI-C库的内存管理源代码,发现一个类型定义语句:
typedef  struct  _header  *LIBDEF_HEAP_DPTRQ   HeaderPtr;
我先不看typedef,就当这个语句在定义一个变量:
struct  _header  *LIBDEF_HEAP_DPTRQ   HeaderPtr;
struct  _header说明一个 _header型结构体,*与LIBDEF_HEAP_DPTRQ结合说明LIBDEF_HEAP_DPTRQ是一个指针变量,指向_header型结构体,这里已经定义了一个LIBDEF_HEAP_DPTRQ变量,那后面的HeaderPtr又是什么?
forgot 发表于 2013-1-5 11:53 | 显示全部楼层
就是把struct  _header  *LIBDEF_HEAP_DPTRQ   定义为 HeaderPtr
后面用struct  _header  *LIBDEF_HEAP_DPTRQ   的时候可以直接用HeaderPtr代替
chenyu988 发表于 2013-1-5 11:58 | 显示全部楼层
typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到。
yc_2503 发表于 2013-1-5 15:29 | 显示全部楼层
同头上 就是给现有的一个类型起一个新名字。。。建议楼主多看下C语言的基础教程~ 上面很详细的
LDTEST 发表于 2013-1-5 16:25 | 显示全部楼层
本帖最后由 LDTEST 于 2013-1-5 16:27 编辑

如果把  typedef  struct  _header  *LIBDEF_HEAP_DPTRQ   HeaderPtr;
换成    #define   struct  _header  *LIBDEF_HEAP_DPTRQ     HeaderPtr
然后  


。//代码若干
HeaderPtr;   
。//代码若干


《《《《《《《《《《《《《《《《《《《《《《《
这就变成了


。//代码若干
struct  _header  *LIBDEF_HEAP_DPTRQ ;
。//代码若干


也就是说仅仅在这里申明了一个类型为_header  的结构体指针变量 LIBDEF_HEAP_DPTRQ

《《《《《《《《《《《《《《《《《《《《《《《《
这写法真蛋疼………………
   
 楼主| 康康同学 发表于 2013-1-5 17:21 | 显示全部楼层
谢谢楼上各位,已经搞清楚了,语句typedef  struct  _header  *LIBDEF_HEAP_DPTRQ   HeaderPtr;其中LIBDEF_HEAP_DPTRQ   为一个条件预定义宏,某些条件时展开为far关键字,某些条件为空,为空时把语句展开得到typedef  struct  _header  * HeaderPtr;就是定义了一个新类型,这个新类型是一个指向_header结构体的指针。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

107

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部