永发信息网

ucos-ii中的几条语句 OS_TCB *ptcb; ptcb=xxx; if(ptcb==(OS_TCB *)0) {......}

答案:2  悬赏:0  手机版
解决时间 2021-04-04 01:27
  • 提问者网友:萌卜娃娃
  • 2021-04-03 05:09
ucos-ii中的几条语句 OS_TCB *ptcb; ptcb=xxx; if(ptcb==(OS_TCB *)0) {......}
最佳答案
  • 五星知识达人网友:像个废品
  • 2021-04-03 06:21
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看成整型的了,学艺不精,呵呵。
全部回答
  • 1楼网友:西风乍起
  • 2021-04-03 06:36
(OS_TCB *)0 是强制类型转换,见过一次这情况,但不太清楚,好像在判断函数是否出错时用了这个;可能ptcb的值就是从(OS_TCB *)*等类似操作得到的,所以用这样一个语句来把常量0也转换了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯