如果我将 part 结构的声明(例如)包含在两个不同的文件中, 一个文件中的 part 变量与另一个文件中 part 变量的类型相同吗?
答案 0 :(得分:3)
是的,如果声明在结构上相同,则它们属于同一类型。如果这不是真的,那么调用使用结构参数的库函数是不可能的,因为调用者和被调用者在不同的文件中。
声明不必完全相同。只要它们以相同的顺序指定相同的类型,诸如成员名称和结构类型的名称之类的东西就不必匹配。所以如果你这样做:
file1.c中:
struct {
int i;
char c;
} var1;
并在file2.c中:
typedef struct newstruct {
int v1;
char v2;
} newstruct_t;
newstruct_t var2;
然后var1
和var2
属于同一类型。
完整的细节有点复杂,但这是一个有用的近似值。
但是,这样的编程会令人困惑。如果您打算在文件之间共享类型,则应将声明放在头文件中,并将#include
放在使用它的所有源文件中。