这个警告的意思是缺少函数原型。大多数情况是由于头文件未包含或者包含错误导致的,这种情况多半会报错error导致编译失败。
可是反复检查并没有发现头文件包含上出现了问题,但是编译器就是要报警告:
而且不影响编译,可以顺利产生.hex文件。起初一种没有管这个问题,可是最近出现这个警告愈发频繁。强迫症深受其害,看到警告哪怕不影响使用还是难受。(可以在设置里面屏蔽某个警告,但是有点掩耳盗铃的感觉哈哈)
查找了很多资料没发现解决办法。为什么明明能使用这个函数但是还要报‘找不到函数原型’的警告呢?
难道是编译器一开始没找到函数原型,但是这个函数原型是实实在在存在的所以没有报error?
- 问题解决:
我们知道keil工程不需要把每一各文件都加入工程文件夹,编译器会自动寻找根目录,我的一般习惯只将 ‘.c’ 文件加入进工程,对应的 '.h' 文件就让编译器自己寻找。这样的工程树看起来就很舒服,有哪些模块,模块用到了哪些其它模块一目了然:
所以会不会是因为我没有把声明该函数的‘.h’文件加入工程,所以编译器一开始没找到函数原型报警告,但是编译完发现这个函数是存在的所以没有报错(error)。于是我添加了 'LEC1602.h' 文件:
再次编译:
ohhhhhhhhh!!!!
看到 ‘0 Error(s),0 Warning(s)’ 太爽了。
- 声明
具体是为什么我还是不明白这里只是给大家一个解决思路,毕竟这个问题困扰了我很久。