查看: 5523|回复: 3

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

[复制链接]
  • TA的每日心情
    开心
    2014-8-7 16:04
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-11-15 12:58:47 | 显示全部楼层 |阅读模式
    分享到:
    卢老师,在按键控制流水灯的程序编译过程中出现一个警告,如下图
      
    QQ截图20131115124912.jpg

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2018-1-8 15:51
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 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对这个的处理是编译的时候警告,但仍然是在正确的地址调用了这个程序。


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-8-7 16:04
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]常住居民I

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

    哦  原来如此!谢谢卢老师,我没有去调试,而是理想的认为程序没有进去编译。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-1-8 15:51
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]偶尔看看III

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

    还是要多谢你指出了程序的BUG
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 02:39 , Processed in 0.139472 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.