【发布时间】:2019-02-01 20:21:09
【问题描述】:
假设我有一个程序,其中我有一个类似于errno(名为project_error)的全局变量,其中存储了过去发生的确切错误,但我也希望函数返回一个简单的OK/ NOK 状态以简化错误处理,因此我仅在返回 NOK 时检查 project_error。
是否可以使用<stdlib.h> 中定义的标准宏,或者我自己定义更好,因为这些通常意味着您实际上已退出程序?
这可能是基于意见的,但我想知道是否有任何事实上的标准或惯例。
以这种方式返回的错误可能是“输入超出范围”类型的无害错误,它只是拒绝用户输入并再次询问,或者是致命错误,需要调用者进行清理、发出警告并退出。这是通过读取全局变量而不是返回值来决定的。
【问题讨论】:
-
没有“事实上的标准”,例如everyonedoesitdifferently。至于我自己,我通常只是
return -__LINE__;,因为通常错误是无法恢复的。但是,请节省时间,不要使用单个全局静态变量。 -
我使用全局变量,因为它是一个嵌入式系统,我可以轻松地将变量显示为长 LED 闪烁 (1) 和短 LED 闪烁 (0),这很容易向我显示发生的错误。我不会在桌面程序上这样做,如果需要,我会直接打印并退出
-
投票结束作为 POB,但接受的答案是一个很好的建议。
标签: c error-handling