我正在做一个大学项目,C
其中要求非常严格,因为我不允许包含任何其他文件或修改任何头文件。
我目前正在尝试实现一个链接列表来存储一些记录,我需要它跨越两个.c
文件。目前要使用全局变量,我一直在声明变量file1.c
,然后在file2.c
using extern
. 但是我如何对结构执行此操作,因为我总是将它添加到.h
文件中?
干杯
我正在做一个大学项目,C
其中要求非常严格,因为我不允许包含任何其他文件或修改任何头文件。
我目前正在尝试实现一个链接列表来存储一些记录,我需要它跨越两个.c
文件。目前要使用全局变量,我一直在声明变量file1.c
,然后在file2.c
using extern
. 但是我如何对结构执行此操作,因为我总是将它添加到.h
文件中?
干杯
将头文件中的内容放在每个源文件中。
很难辨别为什么有人会提出这样的要求。这就像被要求在没有任何金属工具的情况下建造木结构房屋。知道它可能想教什么吗?
对你的程序设置这样的限制似乎很愚蠢,但我怀疑你的老师正试图让你实现封装。
你真的需要在两个文件中都使用结构吗?尝试拥有一个处理该结构的 .c 文件,并将对该结构的操作公开为函数调用。
例如:您可能决定让 file2.c 处理该结构。在任何函数之前,在任何#include
语句之后声明 file2.c 中的结构 - 换句话说,如果你有一个头文件,你将在其中包含头文件。
然后,如果您需要从 file1.c 访问结构,请调用 file2.c 中的函数来为您完成这项工作。
尽量避免使用全局变量,而是传递参数。链表的一个典型全局变量可能是头(或锚)指针。您可以将其作为static
file2.c 中的全局(或处理链接列表的任何一个)并将其隐藏 - 应该不需要共享。
一旦链表上的所有操作都封装在一个文件中,它就变得独立于用户代码,并且可以在其他程序中使用。