用Keil编译单片机程序时,我定义了一个局部变量但没使用,(此时编译器警告set but neve

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Keil编译单片机程序时,我定义了一个局部变量但没使用,(此时编译器警告set but neve相关的知识,希望对你有一定的参考价值。

用Keil编译单片机程序时,我定义了一个局部变量但没使用,(此时编译器警告set but never used),我检查栈内存的时候找不到该变量,请问该变量是存在哪里了?还是直接丢弃了?跪求单片机大神解答

参考技术A 该变量是存在哪里了?
--被其它变量覆盖了

还是直接丢弃了?

--也算是丢了。追问

我在网上查了一下,说局部变量在定义的时候分配的栈内存,不应该是每个变量都会有自己的栈空间吗,难道说一定要使用了才会给它分配内存?

追答

说局部变量在定义的时候分配的栈内存,...
--不过是凭空的、信口开河而已。

难道说一定要使用了才会给它分配内存?

--Keil软件,其优化编译的智能性,不是一般人能理解的。

--不仅的变量。
--你还可以写一个函数,但是,你不调用它。
--编译后,你再找找,这个函数,它存在吗?

追问

也就是说是Keil把这些没用到的东西都优化掉了,也可以理解,毕竟本来内存就不多。谢谢啦

本回答被提问者采纳
参考技术B 应该是编译器直接优化了,可以不管它。追问

现在在做一个调试小工具,就是要找到这些变量所在的地址,然后读取变量的值

参考技术C 找出这个警告的前面的名称去搜索就知道了追问

在哪搜索?

参考技术D

怎么用codeblocks代替keil写和编译单片机程序?

keil用着没codeblocks爽,刚下的最新版keil4还破解不了
我不需要codeblocks生成hex文件,我只需要它能编译单片机程序,然后我再粘贴过keil生成hex文件

虽然可以说都是用来写C的,但你要知道单片机的头文件等codeblocks是没有的,写单片机程序前正常都会选择哪个芯片,codeblocks上你什么选。虽然不要它出HEX,但这些都没有它不可能编译通过吧。按你这么理解我的电脑就可以不用AVR和PIC单片机的软件了。
你刚开始不习惯,但你用久点了就会习惯你所用到的功能了。keil的破解文件网上很多的啊
参考技术A

codeblocks里边好些没有单片机的头文件,给你个keil4,内含注册机

本回答被提问者采纳
参考技术B keil本来就支持第三方编辑器的,这篇文章应该完美地回答了你的问题:http://blog.csdn.net/arielxp/article/details/625650

以上是关于用Keil编译单片机程序时,我定义了一个局部变量但没使用,(此时编译器警告set but neve的主要内容,如果未能解决你的问题,请参考以下文章

51单片机stack堆栈

怎么用codeblocks代替keil写和编译单片机程序?

用keil软件如何实现51单片机二进制数的累加?

c程序hex文件在用keil2编译生成新的hex文件怎么不一样了

keil4如何在编译时不编译未调用的函数?

这是IAR的Dmp程序,我移到keil后出现这么多错误,解决不了,在iar是可以编译成功的