社区导航

 

搜索
查看: 1896|回复: 3

[求助] pic18K25K80 变量值被修改

[复制链接]

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-5-8 09:26 | 显示全部楼层 |阅读模式
程序中的变量使用结构定义,并用#pragma udata 定位。仿真过程中,会出现结构中的某个变量的值被篡改。有人遇到过类似问题吗?

回复

使用道具 举报

601

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-5-8 10:04 | 显示全部楼层
#pragma仅作为 udata的功能定义,如果还是未定义数据的类型(静态变量?常量?),数据的数值还是会改变的,这要用到关键词是:const

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-5-8 12:18 | 显示全部楼层
dingzy_2002 发表于 2015-5-8 10:04
#pragma仅作为 udata的功能定义,如果还是未定义数据的类型(静态变量?常量?),数据的数值还是会改变的,这要用到关键词是:const

我定义的是全局动态变量,并声明了变量类型,例如: unsigned char testVariable。现在的问题是,testVariable的数值会被非预期的改写。

点评

1.首先,要看全局变量是否在其它函数中被使用过; 2.尽量使用局部变量,如果要使变量在运行过程中不被其它函数改写或编译器优化掉,建议使用static(静态变量)关键词; 3.数据传递使用带参数返回指令。 这样能尽  详情 回复 发表于 2015-5-9 16:35

回复

使用道具 举报

601

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-5-9 16:35 | 显示全部楼层
forbbzmt 发表于 2015-5-8 12:18
我定义的是全局动态变量,并声明了变量类型,例如: unsigned char testVariable。现在的问题是,testVariable的数值会被非预期的改写。

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-12 04:33 , Processed in 0.182348 second(s), 26 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表