完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想知道我在程序中使用函数指针的方式是否是危险的。我正在改变函数指针指向的地址,当程序在尖函数时,地址可能改变。下面的第一组代码是为了总结我的实现。我在我的计算机上运行了第二组代码,并用gcc编译,程序循环通过函数1到3,正如我所预期的那样,返回到主函数,但是我不确定这是不是一个好的实践。有什么想法吗?/ /
|
|
相关推荐
6个回答
|
|
这应该不是大多数编译器的问题,但是您没有说明您使用的是什么。返回值是按在堆栈上的PIC24-33。
|
|
|
|
谢谢,我用的是XC16V1.26。
|
|
|
|
这取决于指针的大小。如果XC16使用16位指针,那么这是非常好的。如果它使用32位指针,如果出现这样的序列,可能会出现问题:-main代码加载函数的高字-中断改变指针-main代码加载函数的低字-main代码调用函数的低字,高字来自旧函数,低字来自地址来自新功能。这是一个潜在的灾难。我不知道XC16是否(或在什么情况下)使用32位函数指针。你最好在XC16论坛上问RICS提出的建议。
|
|
|
|
如果你正在改变插入中的指针,那么你是幸运的。否则在调用函数中改变是可以的。
|
|
|
|
您可以拥有一个函数指针数组,并使用数组index.void(*const State_Table[])(void)={function1,function2,function3,};调用函数:State_Table[index]();
|
|
|
|
Btbass,我想你在功能三后还有一个逗号,但我明白了。谢谢您。
|
|
|
|
只有小组成员才能发言,加入小组>>
5244 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3214 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2261 浏览 5 评论
779浏览 1评论
673浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
599浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
683浏览 0评论
580浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:51 , Processed in 1.379933 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号