prendere questo semplice programmastrerror con MinGW-W64
#include <stdio.h>
#include <string.h>
#include <errno.h>
int
main (void)
{
printf ("ERROR %d %s\n", ETIMEDOUT, strerror (ETIMEDOUT));
return 0;
}
Se si compila con Cygwin gcc funziona benissimo
$ gcc a.c
$ ./a
ERROR 116 Connection timed out
Se si compila con MinGW-W64 gcc non dà adeguata messaggio di errore
$ i686-w64-mingw32-gcc a.c
$ ./a
ERROR 138 Unknown error
Come posso ottenere MinGW-w64 per inserire il messaggio di errore corretto?
Alcune informazioni aggiuntive su 'ETIMEDOUT': almeno una delle mie installazioni MinGW la definisce come' 10060' (uguale a 'WSAETIMEDOUT') invece di' 138' se non è già definita. Penso che questo sia dovuto al fatto che il precedente 'winsock.h' lo faceva (ma non lo fa più). Boost lo definirà come '9938' se il' cerrno' del compilatore non lo definisce già - cosa che non iniziò a succedere in MSVC fino a VS2010. Quindi, direi che potresti considerarti un po 'fortunato che hai persino il programma da compilare. –
@MichaelBurr - WinSock ha preso in prestito WSAETIMEDOUT (10060) da Berkeley Sockets in base a http://www.sockets.com/err_lst1.htm#WSAETIMEDOUT –