C:typedef结构。函数不';无法识别结构的类型

C:typedef结构。函数不';无法识别结构的类型,c,struct,typedef,C,Struct,Typedef,所以情况是。。。 我有三个文件:main.c | functions.h | functions.c 在main.c中,我创建了一个结构,并将其定义为一个名为“score”的新类型: 然后,我创建了一个名为SpScore的“score”实例: score SpScore; 我将它传递给一个名为spgame\u f的函数(在main.c中): spgame_f(SpScore); spgame\u f位于functions.c中。现在,在编译时,它给出了一个错误: unknown type n

所以情况是。。。 我有三个文件:main.c | functions.h | functions.c

在main.c中,我创建了一个结构,并将其定义为一个名为“score”的新类型:

然后,我创建了一个名为
SpScore
的“score”实例:

score SpScore;
我将它传递给一个名为
spgame\u f
的函数(在main.c中):

spgame_f(SpScore);
spgame\u f
位于functions.c中。现在,在编译时,它给出了一个错误:

unknown type name: score
我还尝试在“functions.c”顶部定义结构,这给了我一个错误:

expected ':', ',', ';', '}' or '__attribute__' before '=' token" (error for the line where the integer's are declared in the struct).

我做错了什么?

不能在
typedef
中初始化
struct
成员,这没有意义。你应该这样做:

typedef struct
{
    // No = 0 here
    int iWins, iWins2, iTies;
} score;

int main() {
    // Initializing to 0 here
    score SpScore = {0,0,0};
}
此外,您应该将
typedef
放入
.h
头文件中,并将其包含在使用该定义的所有
.c
/
.h
文件中,否则您将得到“未知类型…”错误:

得分 以及:

main.c等。
您不能在类型定义中初始化结构的字段,因为它是禁止的,因为它没有意义。这个问题似乎离题了,因为它缺乏对所使用语言的基本理解。您的问题显示了三个独立的代码片段。很难说出它们之间的关系,而且您还没有向我们展示您正在调用的函数的声明或定义。建议阅读:谢谢你的提示,但我的问题仍然存在:/请花点时间去买一本好书,学习C。学习C的基础中级知识很容易,但你必须学习它,我读了一本关于C语言的书,看了一些课程和教程系列,我只是遇到了一个问题:)我对答案进行了更多的上下文编辑。继续学习!如果你想要一本更好的C语言书(或者更努力地学习),这个主题应该被涵盖。谢谢!无论如何,我现在能够解决这个问题:)
typedef struct
{
    // No = 0 here
    int iWins, iWins2, iTies;
} score;

int main() {
    // Initializing to 0 here
    score SpScore = {0,0,0};
}
#ifndef __SCORE_H__
#define __SCORE_H__

typedef struct
{
    // No = 0 here
    int iWins, iWins2, iTies;
} score;

#endif
#include "score.h"

int main() {
    score pScore = {0,0,0};
    return 0;
}