完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
XC32编译器手册显示它可以执行这种形式的地址跳跃。但是XC8表示数组定义中的语法错误。我需要使用索引GOTO值数组,或者某些方法比长Switch()语句快。
以上来自于百度翻译 以下为原文 The XC32 compiler manual shows it can do this form of address jumping. But XC8 says syntax error at the array definition. static void *array[] = { &&foo, &&bar, &&hack }; // ... goto *array; I need to use an array of indexed goto values or else some method faster than a long switch() statement. |
|
相关推荐
10个回答
|
|
是的,我也建议函数指针。Goto不会接受一个变量Irc:尽管在汇编程序中可以做一些事情…
以上来自于百度翻译 以下为原文 Yeah, I advice function pointers too. goto won't accept a variable, IIRC: though something could be worked out in assembler... |
|
|
|
标签的应用和扩展是在XC8中不可用的GCC扩展。检查手册,“{语用切换时间”可能会给你一个切换语句来做你想做的事情。
以上来自于百度翻译 以下为原文 Applying && to a label is a gcc extension that's not available in XC8. Check the manual, "#pragma switch time" might give you a switch statement that does what you want. |
|
|
|
|
|
|
|
只要在case语句中使用序贯值,您可能会发现编译器自己生成索引GOTO代码。您可以通过编译后的.LST文件来了解像这样的各种有趣的细节。
以上来自于百度翻译 以下为原文 So long as you use sequential values in the case statements, you will probably find that the compiler generates indexed goto code all by itself. You can learn all sorts of interesting details like this by examining the .lst file after compilation. |
|
|
|
@ QHBTIO获取索引开关案例代码,您需要一些事情:严格单调递增的情况下,从0开始,没有任何不确定的最终违约:案例。可能是不允许的。但是从来没有检查过。找到并启用相应编译器的“跳转”生成开关。这些是至少2年以来应用的规则。
以上来自于百度翻译 以下为原文 @ qhb Tio get index switch-case code, you need some things:
|
|
|
|
如果要实现函数表,则对索引有完全相同的要求。
以上来自于百度翻译 以下为原文 You have exactly the same requirements on your index if you are going to implement a function table. |
|
|
|
原则上是正确的。但不需要考虑指针数组的“默认”情况,另一方面,如果初始化指针的常量数组,则是显而易见的。只是另一个例子,如果你能使这个“动态”(AK'在RAM中),其中序列不一定计数。正如你所知道的,这里有很多一厢情愿的想法。因此,我试着把事情弄得像玻璃一样清晰。
以上来自于百度翻译 以下为原文 @qhb Correct in principle. But no need to consider a 'default:' case with respect to a pointer array - on the other hand obvious if initializing a const array of pointers. Just another case if you can make this "dynamic" (aka 'in RAM') where the sequence does not necessarily count. Not obvious when writing a switch-case sequence. As you know, there is a lot of wishful thinking here . Thus I try to make things as clear as glass. |
|
|
|
我怀疑OP对函数指针和函数表不感兴趣,因为他使用的结构依赖于指向单个函数内的标签的指针。
以上来自于百度翻译 以下为原文 I suspect the OP isn't interested in function pointers and function tables since the construct he's using relies on all of the pointers pointing at labels within a single function. |
|
|
|
我不同意。)如果你没有具体处理“默认”情况,你会把无效的索引放入数组中!
以上来自于百度翻译 以下为原文 I'd disagree there. :) If you don't specifically handle the "default" case, you're going to feed an invalid index into your array! |
|
|
|
QHB:同意“索引检查”的必要性。没有变得过于哲学化:这与“默认”有点不同。@他给出的名字是“典型的”哑函数名称。因此,我猜想他会很高兴一些跳转表。否则,一个“跳转开关”很容易做到:只需将不同的代码片段放到案例中。我几乎知道所有的“但是”和“不”S:只是一个适当的设计、能力和实现的问题。------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------你对一个糟糕的建筑有什么期待?
以上来自于百度翻译 以下为原文 @ qhb: agreed regarding the "index check" necessity. Without becoming too philosophical: this slightly differs from 'default:'. @ jtemples: the names he gave are 'typical' dummy function names. Thus I assume he would be happy with some jump table. Otherwise a "jumptable switch-case" would easily do: just putting the diverse code fragments into the cases. I know nearly all about the "but"s and "does not work"s: just a matter of appropriate design, capability and implementation. ---------------------------------------- Don't complain about underperformace ! What do you expect from an awful architecture ? |
|
|
|
只有小组成员才能发言,加入小组>>
5163 浏览 9 评论
2000 浏览 8 评论
1928 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3172 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2226 浏览 5 评论
731浏览 1评论
613浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
503浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
629浏览 0评论
527浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 12:54 , Processed in 1.408107 second(s), Total 95, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号