(OS_TCB *)0 是什么意思?

wjacky2000 2005-12-07 12:01:11
请问:
OSTCBHighRdy = (OS_TCB *)0
是什么意思? 其中OS_TCB是结构体,为任务控制块。
怎么能把一个整数强制为一个结构体类型的指针呢?这是UC/OSII中的。
谢谢
...全文
7876 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjacky2000 2005-12-07
  • 打赏
  • 举报
回复
不好意思,有一分给错了
goodluckyxl 2005-12-07
  • 打赏
  • 举报
回复
初始化工作
RainWindy 2005-12-07
  • 打赏
  • 举报
回复
没写错,表明OSTCBHighRdy初始化为NULL(有定义#define NULL 0)加个强制类型转换是让别人看的更明白,指明OSTCBHighRdy变量的类型
csucdl 2005-12-07
  • 打赏
  • 举报
回复
可以直接写0,表示一个null pointer
但是变量的类型就不明显了
megaboy 2005-12-07
  • 打赏
  • 举报
回复
当然可以啊,地址与整数是可以互相转换的,其实地址值本质上就是一个无符号整数。上述语句是把整数0强制转换为地址0,这个地址0的类型是指向OS_TCB结构的地址。
foxdeng 2005-12-07
  • 打赏
  • 举报
回复
这小子在研究ucos呢!
wjacky2000 2005-12-07
  • 打赏
  • 举报
回复
是空的任务块,还是让指向0X00000000这个地址?然后在0X00000000这个地址里保存着指向OS_TCB结构的指针。那
if ((ptcb = OSTCBPrioTbl[prio]) != (OS_TCB *)0) {
if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0)
OSRdyGrp &= ~ptcb->OSTCBBitY; }
if ((pevent = ptcb->OSTCBEventPtr) != (OS_EVENT *)0) {
if ((pevent->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {
pevent->OSEventGrp &= ~ptcb->OSTCBBitY; }
}

有(OS_TCB *)0和OS_EVENT *)0,是什么意思?岂不是在0地址放有两个地址?
rockefeller8 2005-12-07
  • 打赏
  • 举报
回复
OSTCBHighRdy必须指向优先级最高的那个任务控制快,此语句是强行指向空的任务快。

70,024

社区成员

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

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