这个警告的意思是缺少函数原型。大多数情况是由于头文件未包含或者包含错误导致的,这种情况多半会报错error导致编译失败。

可是反复检查并没有发现头文件包含上出现了问题,但是编译器就是要报警告:

而且不影响编译,可以顺利产生.hex文件。起初一种没有管这个问题,可是最近出现这个警告愈发频繁。强迫症深受其害,看到警告哪怕不影响使用还是难受。(可以在设置里面屏蔽某个警告,但是有点掩耳盗铃的感觉哈哈)

查找了很多资料没发现解决办法。为什么明明能使用这个函数但是还要报‘找不到函数原型’的警告呢?

难道是编译器一开始没找到函数原型,但是这个函数原型是实实在在存在的所以没有报error?

  • 问题解决:

 我们知道keil工程不需要把每一各文件都加入工程文件夹,编译器会自动寻找根目录,我的一般习惯只将 ‘.c’ 文件加入进工程,对应的 '.h' 文件就让编译器自己寻找。这样的工程树看起来就很舒服,有哪些模块,模块用到了哪些其它模块一目了然:

 所以会不会是因为我没有把声明该函数的‘.h’文件加入工程,所以编译器一开始没找到函数原型报警告,但是编译完发现这个函数是存在的所以没有报错(error)。于是我添加了 'LEC1602.h' 文件:

 

 

再次编译:

 ohhhhhhhhh!!!!

看到 ‘0 Error(s),0 Warning(s)’ 太爽了。

  • 声明

具体是为什么我还是不明白这里只是给大家一个解决思路,毕竟这个问题困扰了我很久。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐