gpt4 book ai didi

c - 防止 c 上的值发生变化

转载 作者:行者123 更新时间:2023-11-30 14:51:21 26 4
gpt4 key购买 nike

我决定制作静态库,用函数实现双向链表。现在它的头文件是这样的:

#ifndef LISTS
#define LISTS

#define LIST {0, NULL, NULL}

typedef struct node node;

typedef struct list {
unsigned int length;
node *beginning;
node *end;
} list;

void listAppend(list *list, int value);
int listPop(list *list);
char listRemove(list *list, int value);
void listPrint(list *list);

void listClear(list *list);

#endif

即用户应使用 list myList = LIST; 初始化列表。

我可以防止用户在代码中随意更改list.length,如list.length++吗?

最佳答案

通常,如果您想在纯 C 中向客户端隐藏实现,您可以使用指向不完整类型的指针。为此,您在 .h 文件中提出结构声明,并在 *.c 文件中提出其完整声明。您甚至不能将文字零添加到指向不完整类型的指针,更不用说取消引用它和/或更改一些数据。

此外,如果您想克服一切困难并将列表的 header 放入堆栈,您可能需要在 alloca() 周围编写一个宏。 ,但是我不确定如何在 *.h 文件中计算结构的大小,而无需在范围内进行声明。可以通过 extern const 实现,但恕我直言,它太复杂了。

关于c - 防止 c 上的值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48368689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com