我正在创建一个涉及文件数据的程序。 在其中一个函数中,当我尝试编译它时,使用类型'datte'初始化类型'int'时,我得到错误不兼容的类型
datte,clocck和游戏是结构。
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;
答案 0 :(得分:0)
问题在于,您不能以任何顺序初始化结构,必须按照在结构中声明成员字段的确切顺序对其进行初始化。
例如,在您的games
结构中,您最后声明了datte
成员,作为八个成员。这意味着day
函数中的create_match
变量必须是初始化中的最后一个。
所以而不是像。
games result = { round, day, ... };
你必须写
games result = { round, ..., day };
您还必须确保result
初始化中的其他值在结构中的顺序正确。
答案 1 :(得分:0)
正如编译器警告的那样,您正在尝试初始化int
字段
result.spectators
代码中day
的{{1}}
datte
此外,(至少在MSVC编译器中)嵌套games result = { round, day, otim, "", "", goals_home_team, goals_visiting_team, spectators };
中的字段需要逐项列出。这将初始化为:
struct