Keil MDK 嵌入式开发问题:warning: #223-D: function “sprintf“ declared implicitly
- 在使用 Keil MDK 开发项目,编译时,出现如下警告信息
*** Using Compiler 'V5.06 update 1 (build 61)', folder: 'D:\Keil_v5\ARM\ARMCC\Bin'
Build target 'led_breathe'
compiling main.c...
user\main.c(25): warning: #223-D: function "sprintf" declared implicitlysprintf(dirStr, "%d", dir);
user\main.c: 1 warning, 0 errors
linking...
Program Size: Code=1720 RO-data=320 RW-data=0 ZI-data=1632
".\Objects\led_breathe.axf" - 0 Error(s), 1 Warning(s).
Build Time Elapsed: 00:00:01
问题原因
-
这是一个隐式声明 sprintf 函数的警告,即,调用了 sprintf 函数,但没有包含其头文件(
<stdio.h>
) -
隐式声明警告虽然不会阻止程序编译,但可能引发潜在问题
-
这里的隐式声明经过测试,并不影响程序的正常运行,Keil MDK 的译器对标准库函数的隐式声明容忍度较高,像 sprintf 这种常用函数,链接时能正确找到库中的实现
处理策略
- 添加包含 sprintf 函数的头文件(
<stdio.h>
)
#include <stdio.h>