errno
, _doserrno
, _sys_errlist
e _sys_nerr
Macros globais que mantêm códigos de erro definidos durante a execução do programa e equivalentes da cadeia de caracteres dos códigos de erro para exibição.
Sintaxe
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Comentários
errno
e _doserrno
são definidos como 0 no runtime durante a inicialização do programa. errno
é definido em um erro em uma chamada do sistema. Como errno
contém o valor da última chamada que o define, esse valor pode ser alterado pelas chamadas subsequentes. As chamadas de biblioteca de tempo de execução definidas errno
em um erro não são limpas errno
com êxito. Sempre desmarque errno
chamando _set_errno(0)
pouco antes de uma chamada que pode defini-lo e marque-o imediatamente depois da chamada.
Em um erro, errno
não é necessariamente definido como o mesmo valor que o código de erro retornado por uma chamada do sistema. No caso de operações de E/S, _doserrno
armazena os equivalentes de código de erro do sistema operacional dos códigos errno
. Para a maioria das operações que não são de E/S, o valor de _doserrno
não está definido.
Cada valor errno
é associado a uma mensagem de erro em _sys_errlist
, que pode ser impressa usando uma das funções perror
, ou armazenada em uma cadeia de caracteres com uma das funções strerror
ou strerror_s
. As funções perror
e strerror
usam a matriz _sys_errlist
e _sys_nerr
, o número de elementos em _sys_errlist
, para processar informações de erro. O acesso direto a _sys_errlist
e _sys_nerr
é removido por motivos de segurança do código. Recomendamos que você use as versões funcionais, mais seguras, em vez das macros globais, como mostrado aqui:
Macro global | Equivalentes funcionais |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , _strerror_s , _wcserror_s , __wcserror_s |
As rotinas matemáticas da biblioteca definem errno
chamando _matherr
. Para tratar erros de matemática de maneira diferente, grave sua própria rotina de acordo com a descrição da referência de _matherr
e denomine-a _matherr
.
Todos os valores errno
são constantes predefinidas em <errno.h>
, e compatíveis com UNIX. Somente ERANGE
, EILSEQ
e EDOM
são especificadas no padrão ISO C99. Para obter uma lista completa, consulte errno
constantes.
Requisitos
Macro global | Cabeçalho necessário | Cabeçalho opcional |
---|---|---|
errno |
<errno.h> ou <stdlib.h> , <cerrno> ou <cstdlib> (C++) |
|
_doserrno , _sys_errlist , _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
As macros _doserrno
, _sys_errlist
e _sys_nerr
são extensões da Microsoft. Para obter informações sobre compatibilidade, consulte Compatibilidade.
Confira também
Variáveis globais
errno
Constantes
perror
, _wperror
strerror
, _strerror
, _wcserror
, __wcserror
strerror_s
, _strerror_s
, _wcserror_s
, __wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno