snprintf的隐式声明

时间:2014-03-25 22:05:35

标签: c c99 printf c89

我注意到当我编译这个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?有人可以向我解释这种行为吗?

1 个答案:

答案 0 :(得分:4)

snprintf 仅在C99中指定,与C90中的 sprintf 不同。有关详细信息,请参阅man sprintf