c - 错误: incompatible types when initializing type 'int' using type ' '

标签 c incompatibility

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

相关文章:

objective-c - 如何让 rand() 更有可能选择某些数字?

检查值是否在音叉反汇编中

有人可以解释模数是如何工作的吗?

c++ - 程序在 VS 2008 中运行良好,在程序结束时在 VS 2010 中抛出异常

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本

c - “已定义但未使用”警告和正确的代码风格

c - C语言中的滚动文本

c++ - C 和 C++ 代码之间的不兼容

multithreading - 与 Java 7 不兼容

java - 自从切换到 Java 7 后,FTPS 客户端无法与 FTPS 服务器通信