errno头文件

来源:互联网 发布:心知天气 融资 编辑:程序博客网 时间:2024/06/06 19:10

以前做IO操作时,常常会得到一个errno_t,其实就是整数 typedef int errno_t;

以下是VC的errno头文件,可以看出Error Code定义为一些整数值

/****errno.h - system wide error numbers (set by system calls)**       Copyright (c) Microsoft Corporation. All rights reserved.**Purpose:*       This file defines the system-wide error numbers (set by*       system calls).  Conforms to the XENIX standard.  Extended*       for compatibility with Uniforum standard.*       [System V]**       [Public]*****/#pragma once#ifndef _INC_ERRNO#define _INC_ERRNO#include <crtdefs.h>#ifdef __cplusplusextern "C" {#endif  /* __cplusplus *//* Declare reference to errno */#ifndef _CRT_ERRNO_DEFINED#define _CRT_ERRNO_DEFINED_CRTIMP extern int * __cdecl _errno(void);#define errno   (*_errno())errno_t __cdecl _set_errno(_In_ int _Value);errno_t __cdecl _get_errno(_Out_ int * _Value);#endif  /* _CRT_ERRNO_DEFINED *//* Error Codes */#define EPERM           1#define ENOENT          2#define ESRCH           3#define EINTR           4#define EIO             5#define ENXIO           6#define E2BIG           7#define ENOEXEC         8#define EBADF           9#define ECHILD          10#define EAGAIN          11#define ENOMEM          12#define EACCES          13#define EFAULT          14#define EBUSY           16#define EEXIST          17#define EXDEV           18#define ENODEV          19#define ENOTDIR         20#define EISDIR          21#define ENFILE          23#define EMFILE          24#define ENOTTY          25#define EFBIG           27#define ENOSPC          28#define ESPIPE          29#define EROFS           30#define EMLINK          31#define EPIPE           32#define EDOM            33#define EDEADLK         36#define ENAMETOOLONG    38#define ENOLCK          39#define ENOSYS          40#define ENOTEMPTY       41/* Error codes used in the Secure CRT functions */#ifndef RC_INVOKED#if !defined (_SECURECRT_ERRCODE_VALUES_DEFINED)#define _SECURECRT_ERRCODE_VALUES_DEFINED#define EINVAL          22#define ERANGE          34#define EILSEQ          42#define STRUNCATE       80#endif  /* !defined (_SECURECRT_ERRCODE_VALUES_DEFINED) */#endif  /* RC_INVOKED *//* Support EDEADLOCK for compatibility with older MS-C versions */#define EDEADLOCK       EDEADLK/* POSIX SUPPLEMENT */#define EADDRINUSE      100#define EADDRNOTAVAIL   101#define EAFNOSUPPORT    102#define EALREADY        103#define EBADMSG         104#define ECANCELED       105#define ECONNABORTED    106#define ECONNREFUSED    107#define ECONNRESET      108#define EDESTADDRREQ    109#define EHOSTUNREACH    110#define EIDRM           111#define EINPROGRESS     112#define EISCONN         113#define ELOOP           114#define EMSGSIZE        115#define ENETDOWN        116#define ENETRESET       117#define ENETUNREACH     118#define ENOBUFS         119#define ENODATA         120#define ENOLINK         121#define ENOMSG          122#define ENOPROTOOPT     123#define ENOSR           124#define ENOSTR          125#define ENOTCONN        126#define ENOTRECOVERABLE 127#define ENOTSOCK        128#define ENOTSUP         129#define EOPNOTSUPP      130#define EOTHER          131#define EOVERFLOW       132#define EOWNERDEAD      133#define EPROTO          134#define EPROTONOSUPPORT 135#define EPROTOTYPE      136#define ETIME           137#define ETIMEDOUT       138#define ETXTBSY         139#define EWOULDBLOCK     140#ifdef __cplusplus}#endif  /* __cplusplus */#endif  /* _INC_ERRNO */

贴在这方便以后查看微笑

但每次对表岂不麻烦,还好好在string.h中已经定义好了通过错误码得到说明的函数 strerror

试试

#include <string.h>#include <errno.h>int main(int argc, char* argv[]){        for (int i = 1; i < 141; i++)    {        char* msg = strerror(i);        printf("%d : %s\n", i, msg);    }        getchar();    return 0;}

发现42号之后全是 Unknown error,原因是 errno 中定义之后的是兼容 Older version C的,或者是别的什么,还不清楚。?


0 0