![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
ucos-ii中的几条语句 OS_TCB *ptcb; ptcb=xxx; if(ptcb==(OS_TCB *)0) {......}
我看到任务调度部分,有好多函数里多有上面的那个判断语句,我能明白语句是在判断指针ptcb接受的地址,但是(OS_TCB*)0是什么意思,还有(OS_TCB*)0可以用0或...
我看到任务调度部分,有好多函数里多有上面的那个判断语句,我能明白语句是在判断指针ptcb接受的地址,但是(OS_TCB *)0是什么意思,还有(OS_TCB *)0可以用0或者NULL代替吗
展开
2个回答
展开全部
OS_TCB是一个类型,就像int char 一样,int * p;就是定义了一个整形的指针。所以,(OS_TCB*)0就是一个空指针,不能用0代替的,类型不一样
追问
那用NULL呢
追答
更改下!可以用0代替如果定义了NULL也可以,总的来说代表空指针就行了,不过我没找到NULL的定义,uCOS里都是这种写法,所以适应它!uCOS后面你可能会用到(void *)0x01之类的,这时候你就不能用0x01代替了。你如果看过一些单片机寄存器是这样设置的 define PA1 (unsigned char*)0x2000,就说明2000这个地址定义成了PA1。结构体一般我就把0看成整型的了,学艺不精,呵呵。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-18
展开全部
(OS_TCB *)0 是强制类型转换,见过一次这情况,但不太清楚,好像在判断函数是否出错时用了这个;可能ptcb的值就是从(OS_TCB *)*等类似操作得到的,所以用这样一个语句来把常量0也转换了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询