stderr未声明的标识符

时间:2013-03-08 08:26:02

标签: c

void
argmatch_valid (const char *const *arglist,
            const char *vallist, size_t valsize)
{
  size_t i;
  const char *last_val = NULL;

  fprintf (stderr, _("Valid arguments are:"));
  for (i = 0; arglist[i]; i++)
    if ((i == 0)|| memcmp (last_val, vallist + valsize * i, valsize))
    {
      fprintf (stderr, "\n  - `%s'", arglist[i]);
      last_val = vallist + valsize * i;
    }
    else
    {
      fprintf (stderr, ", `%s'", arglist[i]);
    }
  putc ('\n', stderr);
}

虽然我已将stdio.h包含在我的.c文件中

,但我得到了以下内容
warning C4013: 'fprintf' undefined; assuming extern returning int

error C2065: 'stderr' : undeclared identifier

warning C4013: 'putc' undefined; assuming extern returning int

我想通过#pragma warning(禁用:4013)禁用警告,但想编译代码干净。

提前致谢

1 个答案:

答案 0 :(得分:8)

虽然stdio.h应该可以工作,但有时你也需要包含stdlib.h。包括以下内容:

#include <stdio.h>
#include <stdlib.h>

声明这两个包含在相同 .C文件的TOP中,定义了上面的argmatch_valid函数。

我的水晶球表明,你认为你所包含的stdio.h正在被评论或其他预处理器部分包裹起来。也许你可以发布你的整个源文件。有人可能会发现真正的错误。