【发布时间】:2013-04-07 23:18:55
【问题描述】:
假设我有 3 个文件:file1.c、file2.c 和 globals.h。 file1.c 和 file2.c 都包含 globals.h。 file1.c 包含 file2.c 需要使用的结构。将结构本身设为外部或创建指向该结构的指针并在 globals.h 中将该指针设为外部更好?
【问题讨论】:
-
这两种情况做不同的事情,所以它们不是替代品。
假设我有 3 个文件:file1.c、file2.c 和 globals.h。 file1.c 和 file2.c 都包含 globals.h。 file1.c 包含 file2.c 需要使用的结构。将结构本身设为外部或创建指向该结构的指针并在 globals.h 中将该指针设为外部更好?
【问题讨论】:
如果我理解正确并且您的“结构”应该是一个全局对象(这是一个有问题的设计选择),那么我会这样做:
foo.h:
typedef struct foo_struct
{
/* ... */
} foo;
extern foo the_foo;
foo.c: [如果你喜欢并且有意义,你可以将它合并到 file1.c 中。]
#include "foo.h"
foo the_foo = { /* ... */ };
file1.c 和 file2.c:
#include "foo.h"
#include "global.h"
/* ... */
【讨论】:
struct foo 他们应该将其作为参数通过地址(或值)传递,而不是依赖于外部全局。 Globals 有他们的位置,但你真的必须向某些人证明它是合理的(我就是其中之一)。