请教一个UCOS里看到的结构体指针的问题?

[复制链接]
3708|6
 楼主| stm8s 发表于 2011-7-20 10:23 | 显示全部楼层 |阅读模式
请教一个UCOS的结构指针的问题?

(OS_TCB *)0 和 (OS_TCB *)1 分别是什么意思
香水城 发表于 2011-7-20 10:28 | 显示全部楼层
把0和1分别变为指向OS_TCB的指针。
 楼主| stm8s 发表于 2011-7-20 10:45 | 显示全部楼层
定义(OS_TCB *) a;  表示 a是指向OS_TCB 结构体的指针,但是只定义没是赋值,编译的时候不会分配内存空间;

(OS_TCB *) a; OS_TCB b;
a = b;              这样就有分配空间了.

(OS_TCB *)1 1是指向OS_TCB 结构体的指针, 那它的地址是什么,结构体的值是什么;
 楼主| stm8s 发表于 2011-7-20 11:23 | 显示全部楼层
if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priority  */
        OSTCBPrioTbl[prio] = (OS_TCB *)1;    /* Reserve the priority to prevent others from doing ...  */

看看这两句;这两句是如何实现功能的.
jinsem 发表于 2012-3-8 17:44 | 显示全部楼层
学习了
纯爷们518 发表于 2012-8-21 09:08 | 显示全部楼层
学习了
cool_coder 发表于 2012-8-21 14:02 | 显示全部楼层
(OS_TCB *)0相当于定义了一个 (OS_TCB *)类型的空指针,用它赋给OSTCBPrioTbl[prio]表示该项为空(未被占用);相反(OS_TCB *)1表示一个非空指针,但它并不指向某个已经存在的结构体实例,而只是一个符号,用它赋给OSTCBPrioTbl[prio]表示该项是保留的(准备另作它用),不要占用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

1

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