PDA

Visualizza la versione completa : [C] syntax error before "MYSTRUCT"


gaten
10-10-2012, 20:14
file1.h




#ifndef FILE1_H
#define FILE1_H

typedef struct _mystruct {
...
} MYSTRUCT;

...


#endif


file2.h




#ifndef FILE2_H
#define FILE2_H

#include "file1.h"

...
void foo( MYSTRUCT s );

#endif


mi dà il seguente errore:

17 C:\Users\Gaten\Desktop\Fuga\file2.h syntax error before "MYSTRUCT"

come mai

c0der
10-10-2012, 21:16
Ci sarà qualche errore dove hai messo i puntini di sospensione perché il resto è giusto.

gaten
10-10-2012, 21:19
Pacman.h


#ifndef PACMAN_H
#define PACMAN_H

#include "Console.h"
#include "Mappa.h"

#define BONUSTIME 50 // Tempo di attività del bonus
#define BONUSSCORE 1000 // Punti acquisiti quando mangio il bonus
#define DEADTIME 25 // Tempo di inattività di un ghost mangiato
#define PACMAN_COLOR 0x0E

typedef struct _pacman
{
int PacX;
int PacY;
int PacWait;
} PACMAN;

PACMAN initPacman( int x, int y, int Time );
void StampaLivello( MAPPA *M );
void StampaPacman( PACMAN P );

#endif


Mappa.h


#ifndef MAPPA_H
#define MAPPA_H

#include "Pacman.h"

typedef struct _mapppa
{
int **Mappa;
int NRighe;
int NColonne;
int InizioX;
int InizioY;
int FineX;
int FineY;
} MAPPA;

void StampaRiquadro( MAPPA *M, PACMAN P );
MAPPA *CreaMappa ( char * );

#endif



Ecco il codice completo . . .

c0der
10-10-2012, 21:23
Proviamo così senza che debba fare una prova sul mio pc.

È probabile (non è detto) che hai problemi perché hai un riferimento incrociato (a include b e viceversa).

Perché non sposti:
void StampaLivello( MAPPA *M );
in Mappa.h visto che il suo posto è quello?
Poi togli:
#include "Mappa.h"
da Pacman.h e mi dici se lo fa ancora.

gaten
10-10-2012, 21:26
Ora sembra andare però mi dà solo questo errore:



[Linker error] undefined reference to `WinMain@16'


Ho anche provato a fare "Riassembla tutto" ma non và!

c0der
10-10-2012, 21:34
In realtà non dovresti aprire un altro thread per un altro problema?

gaten
10-10-2012, 21:34
Risolto, dovevo mettere giustamente

#include "Mappa.h" nel main poichè faccio una cosa del tipo:

MAPPA *M; e non trovava il tipo MAPPA.


Ovviamente qualora avessi bisogno di MAPPA in Pacman.c, dovrò fare

#include "Mappa.h" in "Pacman.h"

Inoltre, è giusto fare in ogni file header



#ifndef PACMAN_H
#define PACMAN_H

..

#endif


???

c0der
10-10-2012, 21:35
Bisognerebbe che ti accattassi un libro di C comunque guarda qui:
http://gcc.gnu.org/onlinedocs/cpp/Once_002dOnly-Headers.html

gaten
10-10-2012, 21:38
Bè direi che è quello che ho detto no?

c0der
10-10-2012, 21:39
Il mio riportarti il link era per capire perché si faceva, non solo un si/no.

Loading