9
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);
}

尽管我在 .c 文件中包含了 stdio.h,但我得到以下信息

警告 C4013:“fprintf”未定义;假设 extern 返回 int

错误 C2065:“stderr”:未声明的标识符

警告 C4013:“putc”未定义;假设 extern 返回 int

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

提前致谢

4

1 回答 1

13

虽然 stdio.h 应该可以工作,但有时您还需要包含 stdlib.h。包括以下这些:

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

在同一个.C 文件的顶部声明这两个包含,您上面的 argmatch_valid 函数已定义。

我的水晶球表明您认为您包含的 stdio.h 被注释或另一个被清除的预处理器部分所包裹。也许您可以发布整个源文件。有人可能会发现真正的错误。

于 2013-03-08T08:33:16.737 回答