隐式声明snprintf函数

5

我注意到当我编译这个iniparser时,它会输出以下警告:

 src/iniparser.c:244:5: warning: implicit declaration of function ‘snprintf’ [-Wimplicit-function-declaration]
     snprintf(keym, secsize, "%s:", s);

解决方案是添加以下内容:
#include <stdio.h>

我尝试过这个方法,但它并不能解决问题。然后我研究了Makefile中的编译标志,并发现了如下内容:

 CFLAGS  += -fPIC -Wall -ansi -pedantic

如果我把这个改成:
 CFLAGS  += -fPIC -Wall -std=c99 -pedantic

它编译时没有警告。这是否意味着C90标准不包括snprintf?有人能解释一下这种行为吗?

2
不,这意味着C90标准不包括snprintf。你的测试并没有涉及sprintf,因为它没有被使用。 - Kaz
1
@Kaz,我是指snprintf。我打错了。 - oz123
1个回答

5

snprintf 仅在 C99 中指定,而 sprintf 则在 C90 中。有关更多信息,请参见 man sprintf


还要注意snprintf和宽字符swprintf具有不同的返回值语义! - Kaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接