采取这个简单的程序
#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来放置正确的错误消息?
最佳答案
ETIMEDOUT
似乎是ISO C标准errno.h的POSIX扩展。与MinGW相比,Cygwin对POSIX的支持更好。已在2007中打开和关闭有关mingw32的ETIMEDOUT
的错误报告。
一种选择是使用GNU可移植性库(Gnulib)。它提供了类似POSIX的errno.h和strerror()/strerror_override()。
关于c - MinGW-w64引发错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13523532/