6

この簡単なプログラムを実行してください

#include <stdio.h>
#include <string.h>
#include <errno.h>

int
main (void)
{
  printf ("ERROR %d %s\n", ETIMEDOUT, strerror (ETIMEDOUT));
  return 0;
}

Cygwin gcc でコンパイルすると正常に動作します。

$ gcc a.c

$ ./a
ERROR 116 Connection timed out

MinGW-w64 gcc でコンパイルすると、適切なエラー メッセージが表示されません。

$ i686-w64-mingw32-gcc a.c

$ ./a
ERROR 138 Unknown error

MinGW-w64 に正しいエラー メッセージを表示させるにはどうすればよいですか?

4

1 に答える 1

2

ETIMEDOUTISO C 標準 errno.hのPOSIX拡張のようです。Cygwin は、MinGW よりも POSIX のサポートが優れています。mingw32に関するバグ レポートは2007 年ETIMEDOUTにオープンされ、クローズされました。

1 つのオプションは、GNU 移植性ライブラリ ( Gnulib ) を使用することです。POSIX ライクなerrno.hstrerror()/strerror_override()を提供します。

于 2012-11-23T06:30:38.103 に答える