打印

typedef类型定义问题

[复制链接]
1540|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语言的基础教程~ 上面很详细的

使用特权

评论回复
5
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

《《《《《《《《《《《《《《《《《《《《《《《《
这写法真蛋疼………………
   

使用特权

评论回复
6
康康同学|  楼主 | 2013-1-5 17:21 | 只看该作者
谢谢楼上各位,已经搞清楚了,语句typedef  struct  _header  *LIBDEF_HEAP_DPTRQ   HeaderPtr;其中LIBDEF_HEAP_DPTRQ   为一个条件预定义宏,某些条件时展开为far关键字,某些条件为空,为空时把语句展开得到typedef  struct  _header  * HeaderPtr;就是定义了一个新类型,这个新类型是一个指向_header结构体的指针。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

107

帖子

3

粉丝