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代替吗 展开
 我来答
confident89
2013-09-24 · 超过32用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:84.7万
展开全部
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也转换了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式