0

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

4

1 回答 1

3

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

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

文件1.c:

struct {
    int i;
    char c;
} var1;

在file2.c中:

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

那么var1var2属于同一类型。

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

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

于 2013-09-02T18:53:41.420 回答