为什么说在小型的微型控制器上使用C函数指针是一种挑战

2020-01-26 12:53发布

不懂,高手解答~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xq13799775162
1楼-- · 2020-01-26 17:57
因为产品设计本身就是一种挑战
guantingwei
2楼-- · 2020-01-26 21:40
没有不能用的指针,只有用不好的指针~
macaroni
3楼-- · 2020-01-27 03:17
 精彩回答 2  元偷偷看……
usingavr
4楼-- · 2020-01-27 05:43
有小的,低端的芯片,编译器不支持函数指针。
以前看PIC就是。
tiger5
5楼-- · 2020-01-27 10:35
不是挑战是方便,比如51用DPTR做指针,如有这样的一个函数调用fun("string");那个string是存放在flash中的ASCII码。编译器会用DPTR作为指针访问flash空间
liujie14565
6楼-- · 2020-01-27 13:33
本帖最后由 barryliu 于 2013-10-19 07:30 编辑

C里的指针翻译到汇编去后就是间接寻址,如果指针指向的是结构体,就还得有基址变址寻指。
如果CPU没有这两种指令,就需要用多条基础指令堆叠,其处理速度可想而知。
51有这两种指令,但只有一个16位寄存器(DPTR)和2个8位(R0 & R1)能参与该类指令的运行,如果一段语句中需要多个指针同时参与操作,就需要把数据往这个寄存器来搬来搬去。只有很有经验的人才知道如何写C代码才能提高这种操作效率,有些老程序员干脆放弃C,直接写汇编。
有些CPU根本就没有这类指令。

一周热门 更多>