错误:使用类型''初始化类型'int'时出现不兼容的类型

时间:2015-12-03 11:02:46

标签: c incompatibility

我正在创建一个涉及文件数据的程序。 在其中一个函数中,当我尝试编译它时,使用类型'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;

2 个答案:

答案 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