2013-04-23 52 views
3

我正在做一个C的大学项目,它的要求非常严格,我不允许包含任何附加文件或修改任何头文件。C - 无头文件的多个文件中的结构

我目前正试图实现一个链表来存储一些记录,我需要它跨越两个.c文件。目前使用全局变量我已经在file1.c中声明了变量,然后在file2.c中使用了extern。但是我怎样才能做到这一点,因为我一直把它添加到.h文件中?

干杯

+2

你确定你的项目应该跨越多个文件吗?似乎不太可能,因为没有.h文件限制。 – 2013-04-23 20:51:25

+1

“我需要它跨越两个.c文件”,就像迈克尔说的,你确定吗?这听起来像你已经被赋予了一个接口来实现。与列表相关的实现部分是否可以包含在一个.c文件中? – 2013-04-23 20:56:38

+0

是的 - 我想创建2个文件一个用于头文件中指定的功能。将另一个文件中包含用户界面的其余功能与调用第一个文件中的功能的代码一起使用。 – slasher53 2013-04-23 21:01:28

回答

6

地点会是什么在每一个源文件的头文件的内容。

要辨别为什么任何人会强加这样的要求是极其困难的。这就好像被要求在没有任何金属工具的情况下建造木结构房屋。任何想法可能试图教导?

+1

可能是某种自动分配检查器的需求。 – 2013-04-23 21:41:27

2

将这样的限制放在你的程序上可能看起来很愚蠢,但我怀疑你的老师试图让你实现封装

你真的需要在这两个文件中使用结构?尝试使用一个处理该结构的.c文件,并将该结构的操作作为函数调用进行公开。

例如:您可能决定让file2.c处理结构。在任何函数之前,在任何#include语句之后声明file2.c中的结构 - 换句话说,如果您有头文件,那么您将包含该头文件。

然后,如果您需要从file1.c访问结构,请调用file2.c中的函数为您完成这项工作。

尽量避免全局变量,而是传递参数。一个典型的全局变量可能是头部(或锚点)指针。你可以把它作为file2.c中的全局文件static(或者是处理链表),并将其隐藏 -​​ 不需要共享。

一旦链表上的所有操作都被封装在一个文件中,它就变成了用户代码的独立,并且可以在其他程序中使用。