pic18K25K80 变量值被修改

2019-03-25 19:07发布

程序中的变量使用结构定义,并用#pragma udata 定位。仿真过程中,会出现结构中的某个变量的值被篡改。有人遇到过类似问题吗? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
dingzy_2002
1楼-- · 2019-03-25 21:12
#pragma仅作为 udata的功能定义,如果还是未定义数据的类型(静态变量?常量?),数据的数值还是会改变的,这要用到关键词是:const
forbbzmt
2楼-- · 2019-03-26 00:21
dingzy_2002 发表于 2015-5-8 10:04
#pragma仅作为 udata的功能定义,如果还是未定义数据的类型(静态变量?常量?),数据的数值还是会改变的,这要用到关键词是:const

我定义的是全局动态变量,并声明了变量类型,例如: unsigned char testVariable。现在的问题是,testVariable的数值会被非预期的改写。
dingzy_2002
3楼-- · 2019-03-26 00:27
forbbzmt 发表于 2015-5-8 12:18
我定义的是全局动态变量,并声明了变量类型,例如: unsigned char testVariable。现在的问题是,testVariable的数值会被非预期的改写。

1.首先,要看全局变量是否在其它函数中被使用过;
2.尽量使用局部变量,如果要使变量在运行过程中不被其它函数改写或编译器优化掉,建议使用static(静态变量)关键词;
3.数据传递使用带参数返回指令。
这样能尽量使得数据不会发生不可预期的更改现象。

一周热门 更多>