我将被否决而被遗忘,但是:
这个问题:https://stackoverflow.com/questions/43510049/c99-for-loop-looses-static-variable-values被标记为不完整,但不是。
用户指出了gcc-arm-toochain3.3.1下的所有reccurent bug元素,在处理结构内部的结构数组时,32位图片上的reccurent甚至更多(此用户的所有问题都与这些相关)。
这个bug是由pic创建的,它将结构中指针的连续性看作一个变量名。
当索引的最后一位不是0时,缓冲区溢出,读取的值类型错误,为max int的倍数。
将代码更改为:
structure1.structure2[i].var1 = blabla;
通过
structure2_ * ptr = NULL;
ptr = &structure1.structure2[i];
ptr->var1 = blabla;
将立即修复它(在keil3.0和windows xp下使用arm gcc工具链3.3.1重新创建并在pic上测试的示例)
为什么我要把这个作为一个问题贴出来?
1)岗位暂停,我无法回答。
2)我没有足够的声誉,所以我不能评论它。
3)审查编辑的同行没有考虑将编辑作为
回答/评论
所以我的问题-应该是meta,但又一次没有足够的声誉-是:
如果编辑是对所述问题的回答,为什么编辑审阅者不接受我对保留问题的编辑?
否决!
编辑如果有人可以链接到另一个问题,我将不胜感激。
最佳答案
我不确定这是否真的是一个答案,但建议编辑相关的这篇文章和我的问题确实解决了我的问题。