【问题标题】:Need replacement for deprecated arrays in error handling在错误处理中需要替换已弃用的数组
【发布时间】:2011-11-18 12:25:54
【问题描述】:

我正在修改旧代码,它使用已弃用的 sys_errlistsys_nerr 已弃用。谁能告诉我它的替代品?

如果有人告诉我们它的功能,那就太好了。

代码如下:

37 static const char *
38 stringErrorReport(void)
39 {
40 #if ( defined(sgi) )
41         return strerror(oserror());
42 #elif ( defined(_AIX) )
43         return strerror(errno);
44 #else
45         if ( errno > 0 && errno < sys_nerr )
46                 return sys_errlist[errno];
47         else
48                 return "Unknown error.\n";
49 #endif
50 }

让我知道如何替换已弃用的 sys_nerrsys_errlist[ ]

【问题讨论】:

    标签: c linux error-handling


    【解决方案1】:

    此函数是 strerror() 的包装器,并尝试在假定 strerror() 不可用的系统上提供它自己的替换。如果连 sys_errlist 和 sys_nerr 都不可用,它就会失败。但它至少尝试过......

    【讨论】:

    • 你能建议它的替代品吗?
    • 特别是如何检查范围errno &gt; 0 &amp;&amp; errno &lt; sys_nerr
    • 它只是一个字符串数组(errno.h 中常量的文本表示)它可能存在也可能不存在。系统头文件可能会或可能不会发布声明。如果您的系统在其库中有 strerror(),那么它将将该表存储在某处。它对你来说可能是也可能不是。 (但您总是可以通过从循环内部调用 strerror() 来查询它,这很愚蠢)显然,如果标识符 sys_nerr(表大小)对您的程序不可见,则无法对其进行测试。
    • @wildplasser:太糟糕了,没有办法对用户屏幕名称进行投票。再酷:)
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多