完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,朋友们,我有一个奇怪的问题。在我的代码开始之前,我(试图)初始化一个长度为20个字符的数组:静态uint8_t taskArray[20]={1,2,3};main(){...}有时数组是用值1,2,3,0,0,...初始化的。但是,有时(这意味着当我改变任意一段代码,在某处完全不相关的)数组是空的(0,0,0,0,……)。如果我使它为const,那么它工作得很好,或者如果我只是编写可测试的uint8_t taskArray[]={1,2,3}(在方括号中没有数字20),但是,我看NT数组能够在代码中添加一些值,这两种解决方案都是不可能的。为什么会出现这种现象?有人有主意吗?谢谢,杰伊
|
|
相关推荐
4个回答
|
|
XV3.45XC8编译器这是一些最小的代码:include
|
|
|
|
该代码从不引用数组,因此编译器完全有权丢弃它。这就是为什么仅仅用模拟器查看虚拟代码并不总是准确的视图。还要注意,这些包含的大部分通常都是不必要的。include
|
|
|
|
我给你的软件是最小的代码。对于编译器来说,在.(1)循环之前添加行uint8_t a=taskArray[0],以免对数组进行优化。但是,随着代码大小的增加,有时数组不再用值初始化。但是,我的代码和RAM使用量都没有限制(根据MPlab在左下角显示的内容,RAM已满到约60%),而程序内存大约为20%。这就是说,RAM不够满,不能再容纳20个字节。我的问题只是:有时数组满是零,有时它保存正确的值,这取决于我的其他代码。趋势是,对于很少的代码,它似乎可以正常工作,对于更多的代码,它随机地被初始化或没有被初始化。这是编译器错误吗?
|
|
|
|
那么,你所展示的代码没有表现出你所描述的行为?除非它能被复制,否则它不是一个bug,而是一个轶事。
|
|
|
|
只有小组成员才能发言,加入小组>>
5188 浏览 9 评论
2009 浏览 8 评论
1933 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3181 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2232 浏览 5 评论
743浏览 1评论
629浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
512浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
642浏览 0评论
538浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 12:18 , Processed in 1.380006 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号