所以情况是...... 我有三个文件:main.c | functions.h | functions.c
在main.c中我创建了一个struct,并将其定义为一个名为“score”的新类型:
typedef struct
{
int iWins = 0, iWins2 = 0, iTies = 0;
} score;
然后我创建了一个名为SpScore
的“得分”实例:
score SpScore;
我将它传递给一个名为spgame_f
的函数(在main.c中):
spgame_f(SpScore);
spgame_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).
我做错了什么?
答案 0 :(得分:2)
您无法在struct
中初始化typedef
成员,这没有意义。你应该这样做:
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
文件中,否则您将得到一个“未知类型...”错误:
#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;
}