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>

上記の argmatch_valid 関数が定義されている同じ.C ファイルの TOP で、これらの両方のインクルードを宣言します。

私の水晶玉は、あなたが含めていると思う stdio.h が、コメントによってラップされているか、消去されている別のプリプロセッサセクション内にあることを示唆しています。ソースファイル全体を投稿できるかもしれません。誰かが本当のエラーを見つける可能性があります。

于 2013-03-08T08:33:16.737 に答える