使用.h文件来实现.c文件之间的故障安全交互?

时间:2014-11-14 08:41:19

标签: c

我是新手C程序员,我最近在阅读Code Complete中关于限制子系统之间通信的部分,我有一个想法,我想知道它是否被认为是坏的练习或者是否有更好的方法去做。

我们的想法是将.h文件作为代表程序中子系统的.c文件之间的一种接口。例如,如果我在Ac中有特定的功能,我希望能够在Bc中调用,而在Ac中有其他功能,我想从Dc调用,但我想创建一个故障保护,以便如果我(或别人)搞砸了并试图在Dc中调用Bc的Ac函数,它不会编译。要实现这一点,可以制作单独的.h文件(可能称为AtoB.h和AtoD.h),这些文件仅包含要在各自文件中使用的函数的原型,而不是只包含Bc中包含的Ah文件。 Dc与两组功能的原型。

有没有更好的方法来创建这种故障安全?如果没有,除了创建和管理那些额外的.h文件所需的额外工作之外,有什么理由不去做我上面描述的内容吗?我猜测一个缺点可能是可读性(让别人打开我的源代码并思考" ......我正在看?")因为我还没有听说过以前用这种方式使用.h文件的人TIA!

1 个答案:

答案 0 :(得分:3)

传统的方法是将A.h分成几个文件,每个文件都包含功能上属于一起的函数子集。我们称之为feature1feature2等等。

B.c的开头看起来像这样:

#include <stdio.h>
#include <stdlib.h>

#include "feature1.h"
#include "feature3.h"

如果您想强调使用新功能是一件大事,那么您可以将包含移动到单独的文件中,以便每个.c只包含一个.h文件:

Binternal.h:

#include <stdio.h>
#include <stdlib.h>

#include "feature1.h"
#include "feature3.h"

B.c:

#include "Binternal.h"

就个人而言,我认为这会带来更好的结构。使用您提出的方法,相同的原型将出现在多个包含文件中,如果您忘记更改其中一个文件,则会产生运行时错误。

相关问题