C 中函数之间使用链表进行错误通信

问题描述 投票:0回答:1

我的 C 程序中的不同文件中有一些函数,我想在它们之间传达错误。例如:

MEMOERY_ALLOCATION_FAILED
FILE_OPENING_FAILED
NAME_NOT_VALID

我想创建一个

Error
链表,如下所示:

typedef struct Error {
    char *message;
    struct Error *next;
};

并将此链表传递给每个函数,以便函数可以在发生错误时添加错误,如下所示:

int foo(int x, Error *list);

但是这个有一个问题,那就是当为新的

Error
分配空间时,可能会失败,并且调用该函数的函数无法接收该信息。

有哪些有用的想法可以解决这样的问题? 请注意,我无法重新调整错误代码,因为:

  1. 一个函数可以附加多个错误
  2. 函数需要返回其他东西
c error-handling
1个回答
0
投票

但是这个有一个问题。为新错误分配空间时,可能会失败,并且调用该函数的函数无法接收该信息。

如果您担心错误的内存动态分配,您可以尝试预先分配错误结构数组并为错误消息预先分配固定大小。

但是,正如另一位用户提到的,为什么程序在发生大错误后还要继续执行。此时,通常最好让函数返回错误值,而不是尝试继续执行。

© www.soinside.com 2019 - 2024. All rights reserved.