3回答

0收藏

程序编译出现问题declared implicitly,为什么程序仍然工作?

#开源分享 #开源分享 6290 人阅读 | 3 人回复 | 2013-11-15

卢老师,在按键控制流水灯的程序编译过程中出现一个警告,如下图
  


出现declared implicitly这个问题主要是函数声明存在问题,问题原因我找到了是LED.h文件和KEY.h文件的条件编译的定义一致的原因,就是两个头文件都采用
#ifndef __BPLED_H
#define __BPLED_H
导致问题的出现。问题解决很简单的了,这个我会。

我现在有一个问题就是这样void key_init(void);这个函数是没有进行函数声明,为什么程序仍然可以顺利进行工作呢?
分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

laoliang-67665

发表于 2013-11-15 13:31:05 | 只看该作者

这个问题非常好,首先这个是亮点嵌入式的失误,应该改正。
我在代码里把这里注释掉
#ifndef __BPKEY_H
#define __BPKEY_H

#include <include.h>
#include <bp_config.h>
//void key_init(void);
#endif /* __BPKEY_H */
编译器有一个警告:
main.c(82): warning:  #223-D: function "key_init" declared implicitly
但是代码下载后仍然是正确运行。
然后我用JLINK调试,发现仍然是正确的进入了key_init函数运行
说明MDK对这个的处理是编译的时候警告,但仍然是在正确的地址调用了这个程序。


嵌入式,ucos,FPGA系统书籍作者
板凳

说不定

发表于 2013-11-15 13:41:59 | 只看该作者

亮点 发表于 2013-11-15 13:31
这个问题非常好,首先这个是亮点嵌入式的失误,应该改正。
我在代码里把这里注释掉
#ifndef __BPKEY_H

哦  原来如此!谢谢卢老师,我没有去调试,而是理想的认为程序没有进去编译。
地板

laoliang-67665

发表于 2013-11-15 14:01:04 | 只看该作者

说不定 发表于 2013-11-15 13:41
哦  原来如此!谢谢卢老师,我没有去调试,而是理想的认为程序没有进去编译。 ...

还是要多谢你指出了程序的BUG
嵌入式,ucos,FPGA系统书籍作者
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条