продолжайте получать ошибки: "переопределение typedef 'MYSTRUCT'" и "предыдущее объявление 'MYSTRUCT' было здесь" - PullRequest
0 голосов
/ 14 октября 2011

я продолжаю получать сообщение об ошибке, которая должна была произойти, если у меня не было предварительно объявленной структуры, использованной до ее определения, но я это сделал !!: "typedef struct campeonato campeonato; typedef struct Джого Джого; " (как показано в коде ниже). Может кто-нибудь сказать мне, почему я получаю следующие ошибки и что не так с моим кодом:

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;

1 Ответ

2 голосов
/ 14 октября 2011
typedef struct campeonato campeonato;
typedef struct jogo jogo;

Не является предварительным заявлением.Это typedef.Форвардное объявление будет просто:

struct campeonato;
struct jogo;

Как и сейчас, вы дважды набираете defpe campeonato и jogo, что приводит к ошибке.

Обратите внимание, что использование форвардного объявления позволит вам использоватьструктуры, прежде чем они будут определены, вам все равно придется использовать их как struct campeonato в time и struct jogo в campeonato.

...