我的 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
分配空间时,可能会失败,并且调用该函数的函数无法接收该信息。
有哪些有用的想法可以解决这样的问题? 请注意,我无法重新调整错误代码,因为:
但是这个有一个问题。为新错误分配空间时,可能会失败,并且调用该函数的函数无法接收该信息。
如果您担心错误的内存动态分配,您可以尝试预先分配错误结构数组并为错误消息预先分配固定大小。
但是,正如另一位用户提到的,为什么程序在发生大错误后还要继续执行。此时,通常最好让函数返回错误值,而不是尝试继续执行。