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

ETIMEDOUT似乎是对 ISO C 标准 errno.h 的POSIX扩展。Cygwin 对 POSIX 的支持比 MinGW 更好。ETIMEDOUT一个关于mingw32的错误报告于2007年打开和关闭。

一种选择是使用 GNU Portability Library ( Gnulib )。它提供了一个类似 POSIX 的errno.hstrerror()/strerror_override()

于 2012-11-23T06:30:38.103 回答