这段C代码的某些部分对我来说没有意义

这段C代码的某些部分对我来说没有意义,第1张

概述嗨考虑这段代码: uint16_t dest_pid;uint8_t *p;pf->dest_pid = p[0] + (p[1] << 8) //(p[1] << 8) equals 0 right? 此代码是嵌入式 *** 作系统驱动程序的一部分. 一些想法可能是该声明背后的想法?或者可能是我遗失了一些必要的东西? 首先:pf之后的dest_pid是结构的一部分,我认为它是另一个变量,然后是 嗨考虑这段代码:
uint16_t dest_pID;uint8_t *p;pf->dest_pID = p[0] + (p[1] << 8)   //(p[1] << 8) equals 0 right?

此代码是嵌入式 *** 作系统驱动程序的一部分.
一些想法可能是该声明背后的想法?或者可能是我遗失了一些必要的东西?

解决方法 首先:pf之后的dest_pID是结构的一部分,我认为它是另一个变量,然后是uint16_t dest_pID;

第二:p是指向uint8_t的指针,当你执行(p [1]<< 8)时,你将指针内部的内容移动8,例如,如果移位后p [1] = 0xE5将是0xE500.请记住,将结果放在dest_pID中,这是一个2字节的变量. 最后一行的转换最有可能采用pID的低字节(不太重要)并将其添加到pID的高字节(移位8)并将其放入pf-> dest_pID中,你可能会想到为什么他没有从一开始就发送2个字节,原因可能是因为他从一个总线上获取它,每个单位时间(周期)只发送一个字节.

总结

以上是内存溢出为你收集整理的这段C代码的某些部分对我来说没有意义全部内容,希望文章能够帮你解决这段C代码的某些部分对我来说没有意义所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存