2014-03-25 59 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