热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

A程序的局部变量居然可在B程序中用!??

今天遇见鬼了!求高手看到帮忙看看:环境KEILCORTEXM3:具体的鬼如下:A程序中调用了B子程序和C程序,B中定义了变量icount,C中未定义,但是在C中用了icount居然
今天遇见鬼了!
求高手看到帮忙看看:
环境KEIL CORTEX M3:
具体的鬼如下:
A程序中调用了B子程序和C程序,B中定义了变量icount,C中未定义,但是在C中用了icount居然没出错,而且还是B中的icount!!

6 个解决方案

#1


你在A程序中怎么定义的, 不会你本身就定义了个全局变量吧。

#2


局部变量

#3


无代码无真相

#4


不会是B返回值是icount吧?C中使用B的返回值作为入参传进?
B()
{
......
return icount;
}

c(icount)
{
......
}

#5


重建所有。

VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

也许是某个全局变量和局部变量重名了。

#6


果真还是全局变量的问题,原来的测试程序中定义的全局变量还在整个工程中,没删!
真是不好意思,麻烦大家了,也非常谢谢大家了!

推荐阅读
author-avatar
肖顾问
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有