non riesco a capire ciò che la biblioteca errno in C++ è per? Quali tipi di errori sono impostati in esso e come faccio a sapere quale numero indica quale errore?Come faccio a utilizzare errno in C++
influisce l'esecuzione del programma?
non riesco a capire ciò che la biblioteca errno in C++ è per? Quali tipi di errori sono impostati in esso e come faccio a sapere quale numero indica quale errore?Come faccio a utilizzare errno in C++
influisce l'esecuzione del programma?
errno.h fa parte del C sottoinsieme di C++. Viene utilizzato dalla libreria C e contiene codici di errore. Se una chiamata a una funzione fallisce, la variabile "errno" viene impostata in modo corrispondente all'errore.
E sarà di alcuna utilità se si sta utilizzando la libreria C++ standard.
In C si hanno funzioni che si traducono errno codici a C-stringhe.
Per esempio in C funziona in questo modo:
int result = call_To_C_Library_Function_That_Fails();
if(result != 0)
{
char buffer[ 256 ];
char * errorMessage = strerror_r(errno, buffer, 256); // get string message from errno
// ...
}
potrebbe essere necessario è, naturalmente, in C++ quando si utilizza la libreria C o la vostra libreria di sistema operativo che è in C. Per esempio, se si stiamo usando l'API sys/socket.h nei sistemi Unix.
Con C++, se si sta eseguendo un wrapper su una chiamata API C, è possibile utilizzare le proprie eccezioni C++ che utilizzeranno errno.h per ottenere il messaggio corrispondente dai codici di errore di chiamata dell'API C.
fa questo lavoro sulle finestre ... perché ho trovato sul web, che funziona solo su UNIX –
@CAD_coding vedere qui: http://msdn.microsoft.com/en-us/library/zc53h9bh.aspx –
Quasi corretto, ma molte funzioni restituiscono solo il valore singolo (come '-1') in caso di errore e impostano' errno' sul codice di errore effettivo. Quindi dovresti 'strerror_r (errno, ...)' piuttosto che 'strerror_r (errorCode, ...)'. 'errno' è di per sé una pazza variabile pseudo-globale. –
Prendere qualsiasi pagina man e guardare la sezione "Errori", ad es. http://linux.die.net/man/3/open. Tutte le macro 'E *' sono valori 'errno' conterranno in caso di errore. – wormsparty