【发布时间】:2020-08-29 10:12:29
【问题描述】:
我正在用 C 实现一个简单的静态库,我有一些关于错误处理实现的基本问题。
为了举例,我的库支持使用Node 结构的基本链表:
typedef struct Node
{
struct Node* next;
struct Node* prev;
int* data;
}Node;
typedef struct LinkedList
{
Node* head;
Node* tail;
}LinkedList;
假设,作为我提供的接口的一部分 - 我正在提供一个函数的实现,该函数插入一个新的 Node 作为 LinkedList 头
void insertHead(LinkedList* LinkedList, Node* node)
{
if(LinkedList == NULL || node == NULL)
{
// How to implement?
}
}
例如,我想捕获最基本的错误 - 我的库的用户尝试输入 NULL 指针。我知道使用stderr 或打印错误不是一个好主意,而且 - 使用asserts 也不是一个好主意。
我有点理解我需要使用一个包含错误代码并转换为字符串的全局变量来构建我自己的“错误捕获机制”(也许像枚举?)。
但是 - 我不知道如何实现这种机制,我的库的用户将如何遇到错误本身?接口本身(.lib 文件只有方法声明等,.c 文件有实现) - 所以在链接和编译等之后,用户将如何“看到”我的错误提供?
我很想获得一个关于如何处理用户输入错误的简短示例,抱歉有点不清楚 - 我只是感到困惑。
【问题讨论】:
标签: c error-handling static-libraries