C - 不断收到错误:"redefinition of typedef 'MYSTRUCT'"和"previous declaration of 'MYSTRUCT' was here"



我一直得到一个错误,应该发生如果我没有预先声明的结构使用的定义之前,但我做了!!typepedef struct campeonato;类型定义struct jogo;(如下面的代码所示)。谁能告诉我为什么我得到以下错误和我的代码有什么问题:

c:21: error: redefinition of typedef 'campeonato'
c:5: error: previous declaration of 'campeonato' was here
c:29: error: redefinition of typedef 'jogo'
c:6: error: previous declaration of 'jogo' was here

产生这些错误的代码是…

typedef struct campeonato campeonato;
typedef struct jogo jogo;
typedef struct time{
       char nome[32];
       //existe uma correspondencia entre jogos[i][] e campeonatos[i]
       jogo *jogosDeCadaCampeonato;
       campeonato *campeonatos[];
       }time;
typedef struct campeonato{
       char nome [100];
       int nro_participantes;
       int nro_jogos;
       time *times;
       jogo *jogos;
       }campeonato;
typedef struct jogo{
       time* timeA;
       time* timeB;
       time* vencedor;
       int golsA;
       int golsB;
       }jogo;
typedef struct campeonato campeonato;
typedef struct jogo jogo;

不是前向声明。它是一个类型定义。前向声明可以简单地写成:

struct campeonato;
struct jogo;

就像现在一样,您两次定义了camponato和jogo,因此出现了错误。

请注意,使用前向声明将允许您在定义结构之前使用它们,您仍然必须将它们用作time中的struct campeonatocampeonato中的struct jogo

最新更新