我正在创建一个程序,其中涉及文件中的数据。 在其中一个函数中,当我尝试编译它时,在使用类型“datte”初始化类型“int”时,我收到错误不兼容类型
datte、clock 和 games 是结构体。
games create_match(int round, int goals_home_team, int goals_visiting_team, int spectators, char home_team[MAX_TEAM_NAME], char visiting_team[MAX_TEAM_NAME],
datte day,
clocck otim)
{
games result = { round, day, otim, "", "", goals_home_team, goals_visiting_team, spectators };
strcpy(result.home_team, home_team);
strcpy(result.visiting_team, visiting_team);
return result;
}
我的编译器说错误出现在“games result =re...”行。
我有另一个程序的另一个函数,它是相同的,但编译没有问题
kamp、dato 和 klokke 是结构体
kamp lav_kamp(int runde, dato dato, klokke klokke,
char hjemmehold[MAX_HOLD_NAVN], char udehold[MAX_HOLD_NAVN],
int hjemmemaal, int udemaal, int tilskuere)
{
kamp res =
{ runde, dato, klokke, "", "", hjemmemaal, udemaal, tilskuere };
strcpy(res.hjemmehold, hjemmehold);
strcpy(res.udehold, udehold);
return res;
}
所以我不明白的是为什么第一个函数无法编译,但第二个函数可以。
编辑:
3个结构体
typedef struct games
{
int round_of_games,
spectators,
goals_home_team,
goals_visiting_team;
char home_team[MAX_TEAM_NAME],
visiting_team[MAX_TEAM_NAME];
clocck otim;
datte datte;
} games;
typedef struct clocck
{
int tim_hour,
tim_min;
} clocck;
typedef struct datte
{
int odate_day,
odate_year;
enum odate_month
{
January, February, March, April, May, June, July, August, Septemper, October, November, December
} odate_month;
} datte;
最佳答案
问题是您不能以任何顺序初始化结构,您必须按照结构中声明成员字段的确切顺序初始化它。
例如,在您的 games
结构中,您最后声明了 datte
成员,作为第八个成员。这意味着 create_match
函数中的 day
变量必须是初始化中的最后一个变量。
所以而不是例如
games result = { round, day, ... };
你必须写
games result = { round, ..., day };
您还必须确保 result
初始化中的其他值在结构中的顺序正确。
关于c - 错误: incompatible types when initializing type 'int' using type ' ' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064278/