【发布时间】:2017-01-21 16:22:59
【问题描述】:
strerror() 函数返回一个简短的错误描述,给定错误号作为参数。例如,如果参数为 ENOTDIR,则返回“Not a directory”,如果参数为 EBUSY,则返回“设备或资源忙”等。
但是,有没有一个函数可以返回“ENOTDIR”来表示参数等于 ENOTDIR,“EBUSY”表示参数 EBUSY 等等?
我只是想避免为此编写一个巨大的 switch 语句。
【问题讨论】:
-
errno 返回最后一个错误号。这并不完全符合您的要求,但您始终可以创建一个枚举并稍后将其转换为字符串,there are a couple ways to do that。
-
这听起来是个坏主意。 strerror() perror() 等函数专门用于提供有用的错误消息。为什么选择打印枚举名称而不是相关的错误消息?
-
@David 我正在编写程序员使用的工具,希望打印“EFAULT”、“EBUSY”、“ENOTSOCK”等,而不是一些文本。程序员说这对他们更有用。我不会与程序员争论这一点,尤其是如果我是程序员的话。 ;)
-
为什么要使用 switch 语句?我会为此使用一个字符串数组。
-
@Peter 有多大?在 Linux 上,大约有 130-140 个已定义的 errno 值。
标签: c error-handling runtime-error