PDA

View Full Version : [Visual C++]Segnalazione Errori insensati: Come risolvere?


hibone
15-12-2008, 15:38
Su visual C++ Express 2008 sto compilando un progetto di pochi file, tuttavia mentre compila il primo header VC++ mi restituisce degli errori incredibili e del tutto inspiegabili.

la prima serie di errori č questa:


error C2143: errore di sintassi: '}' mancante prima di 'constant'
error C2143: errore di sintassi: ';' mancante prima di 'constant'
error C2059: errore di sintassi: 'constant'


questi tre errori mi vengono restituiti in relazione ad una voce relativa ad una enumerazione del tipo

enum esempio
{
NO_ACK = 0x00,
NO_DATA = 0x01,
NO_FRAME = 0x02
};

se elimino la voce NO_DATA l'errore scompare. dato che quella enum compare solo nel primo header e non ci sono altre enum contenenti NO_DATA come parametro, nel programma, non riesco a capire il perchč di quell'errore...


l'altra serie di errori č del tipo
error C2011: 'esempio': ridefinizione tipo 'enum'
ed č in relazione ad enumerazioni e strutture, definite come sopra..
anche in questo caso non ci sono enumerazioni strutture con lo stesso nome definite in altri file, quindi non capisco da dove derivi il problema.

tomminno
15-12-2008, 15:47
Hai provato con:

#pragma once

all'inizio dei file .h?

NO_DATA poi č presente in Winsock.h come define e credo proprio che vada in conflitto con la tua definizione, prova ad usare i namespace.

hibone
15-12-2008, 16:12
Hai provato con:

#pragma once

all'inizio dei file .h?

NO_DATA poi č presente in Winsock.h come define e credo proprio che vada in conflitto con la tua definizione, prova ad usare i namespace.

effettivamente non ho provato... verifico subito...

EDIT:
A quanto pare peggiora solo le cose...

PS. io non uso le librerie standard di windows...
e tra gli header che uso, sia miei che di terzi, la voce NO_DATA non appare... :boh:

Alex_87_xelA
15-12-2008, 17:44
effettivamente non ho provato... verifico subito...

EDIT:
A quanto pare peggiora solo le cose...

PS. io non uso le librerie standard di windows...
e tra gli header che uso, sia miei che di terzi, la voce NO_DATA non appare... :boh:

se fai una cosa del genere

enum prova1
{
a1,
b1,
c1
};

enum prova2
{
a2,
b1,
c2
};

genera un errore per doppia definizione ... questo perchč gli enum sono utilizzati per definire costanti ... infatti se ad un enum gli togli il nome

ad esempio :
enum
{
a,
b,
c
};

continuerą a funzionare ... quindi essendo costanti "pubbliche" ... se a 2 enumerazioni differenti assegni le stesse "costanti" ... risulterą un doppia dichiarazione :D

hibone
15-12-2008, 19:31
se fai una cosa del genere

enum prova1
{
a1,
b1,
c1
};

enum prova2
{
a2,
b1,
c2
};

genera un errore per doppia definizione ... questo perchč gli enum sono utilizzati per definire costanti ... infatti se ad un enum gli togli il nome

ad esempio :
enum
{
a,
b,
c
};

continuerą a funzionare ... quindi essendo costanti "pubbliche" ... se a 2 enumerazioni differenti assegni le stesse "costanti" ... risulterą un doppia dichiarazione :D

non per niente avevo specificato
la voce NO_DATA non appare
:D
speravo in un suggerimento "professionale" :asd:
in ogni caso ho "risolto il problema"...
grazie a tutti per la buona volontą dimostrata ;)

Alex_87_xelA
16-12-2008, 00:26
non per niente avevo specificato

:D
speravo in un suggerimento "professionale" :asd:
in ogni caso ho "risolto il problema"...
grazie a tutti per la buona volontą dimostrata ;)

tanto per sapere ... cos'era e come hai risolto ?