2014-03-25 31 views
4

的隐式声明我注意到,当我编译此iniparser它吐出以下警告:的snprintf

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

回答

4

snprintf仅在C99指定,不像sprintf这是在C90。有关更多信息,请参阅man sprintf

+0

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

+0

感谢您的回答。 – Oz123