打印

请飞锐泰克的工程师帮忙解释一下这两句程序,可以吗?

[复制链接]
1878|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdnr|  楼主 | 2007-10-22 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2007-10-23 08:08 | 只看该作者

这是C的基本的东西。。。

使用特权

评论回复
板凳
sdnr|  楼主 | 2007-10-23 10:03 | 只看该作者

单片机里这样做的好处是什么呢

这个我知道,但是单片机里这样做是不是更好的啊?

使用特权

评论回复
地板
ayb_ice| | 2007-10-23 10:36 | 只看该作者

随便说说

不存在什么好不好,单片机用浮点数好不好。。。
有时需要这样用。。。

使用特权

评论回复
5
sdnr|  楼主 | 2007-10-23 11:04 | 只看该作者

还是不太明白

这个程序是一个例程里面的,它的功能完全可以有别的实现方法,对吧?就是不理解在单片机里这样的写法是否会提高编译效率或者执行效率?

使用特权

评论回复
6
FREE_TECH| | 2007-10-23 15:01 | 只看该作者

用指针操作可以节省RAM

void* get_empty_cmd_buf(Command_Buf *cmdbuf)
{
  return (void *) &(cmdbuf->msgbuf[cmdbuf->write_cmd]);
}
主要为了移植方便,
一个返回指针的函数,还要看Command_Buf 的类型

使用特权

评论回复
7
sdnr|  楼主 | 2007-10-23 15:53 | 只看该作者

可否再详细一些

谢谢楼上指引,还是不很明白,可否详细一下呢?返回值应该是“cmdbuf->msgbuf[cmdbuf->write_cmd])”对应的指针吗?

使用特权

评论回复
8
freetech_t| | 2007-10-23 16:48 | 只看该作者

建议大家看看MISR-C

return (void *) &(cmdbuf->msgbuf[cmdbuf->write_cmd]);

cmdbuf是一个指向Command_Buf型的指针变量;该Command_Buf型有自己的数据结构,方便的话请将Command_Buf数据结构粘贴出来。
&取地址符:&(cmdbuf->msgbuf[cmdbuf->write_cmd])的运算结果是一个地址。也就是你理解的“cmdbuf->msgbuf[cmdbuf->write_cmd])”对应的指针

使用特权

评论回复
9
sdnr|  楼主 | 2007-10-23 19:19 | 只看该作者

谢谢了

楼上大侠少打了一个A,应该是MISRA -C,发一个网址:http://www.xgdown.com/article/236/32263_1.htm
看后获益匪浅,发现有几条规则与普通的C语言要求差异很大。

感谢楼上大侠给我指路

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

1

粉丝