keil5标准库编程问题

keil5写完一个工程编译后出现警告main.c(14): warning: #223-D: function "USART1_INIT" declared implicitly
但是再点一次编译警告没了,然后go to definition of ”USART1_INIT”跳不过去,这是为什么。真搜不到了,
附图如下:

img

img

img

是因为USART1_INIT这个函数前面没有声明过,包含的头文件里也没有声明,所以出现declared implicitly的警告。虽然看到你贴的代码里确实有声明,但是可能设置的include路径有问题,导致编译器并没有找到这个头文件(如果这样,编译器应该会提示头文件没找到)。
再次编译的时候,这个文件已经编译过,不参加编译,当然就没警告了,除非你选择完全重新编译。
至于go to definition 找不到,有两种可能
1,output选项里,你没有勾上“Browse Information”选项
2,build出错,或者你只compile,没有build,导致并没有生成Browse Information信息,

先说说警告为什么没了
这个是编译阶段的,如果文件没修改,Build时会直接跳过编译,直接连接,所以这个提示没了,你Rebuild All时它就又会出来

再说下implicitly的问题
当有其他.h文件里有声明同样的东西时就会给这个提示, 常见的像一些abs()之类 stdlib.h和math.h里都有,你同时#include时就会出这个警告
你可以search整个项目看看还有哪里声明了这个东西

img

img

USART_Init函数的功能是初始化异步串口,包括选定使用的串口,设定串口的数据传输速率、数据位数、检验方式、停止位、流量控制方式等,是串口最重要的库函数。