多个文件中的结构声明

时间:2013-09-02 18:50:03

标签: c structure declaration

如果我将 part 结构的声明(例如)包含在两个不同的文件中, 一个文件中的 part 变量与另一个文件中 part 变量的类型相同吗?

1 个答案:

答案 0 :(得分:3)

是的,如果声明在结构上相同,则它们属于同一类型。如果这不是真的,那么调用使用结构参数的库函数是不可能的,因为调用者和被调用者在不同的文件中。

声明不必完全相同。只要它们以相同的顺序指定相同的类型,诸如成员名称和结构类型的名称之类的东西就不必匹配。所以如果你这样做:

file1.c中:

struct {
    int i;
    char c;
} var1;

并在file2.c中:

typedef struct newstruct {
    int v1;
    char v2;
} newstruct_t;
newstruct_t var2;

然后var1var2属于同一类型。

完整的细节有点复杂,但这是一个有用的近似值。

但是,这样的编程会令人困惑。如果您打算在文件之间共享类型,则应将声明放在头文件中,并将#include放在使用它的所有源文件中。