【问题标题】:Implicit declaration of snprintfsnprintf 的隐式声明
【发布时间】:2014-03-25 22:05:34
【问题描述】:

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

【问题讨论】:

  • 不,这意味着C90标准不包括snprintf。您的测试没有说明sprintf,因为它没有被使用。
  • @Kaz,我的意思是 snprintf。我打错了。

标签: c c99 printf c89


【解决方案1】:

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

【讨论】:

  • 还要注意snprintf 和宽字符swprintf 具有不同的返回值语义!
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 2021-01-20
相关资源
最近更新 更多