2009-05-26 4 views
10

Si attiva questo avviso più volte nel mio codice di una stessa dichiarazione, in cui si legge:Come posso rimuovere il VS C4091 avviso: 'typedef': ignorata a sinistra di 'FOGLIO' quando nessuna variabile viene dichiarata

// Spreadsheet structure 
typedef struct SPREADSHEET 
{  
     int ID;    // ID of the spreadsheet  
     UINT nLines;   // Number of lines 

     void CopyFrom(const SPREADSHEET* src) 
     { 
      ID = src->ID; 
      nLines = src->nLines; 
     } 
}; 

Non voglio disattivare questo avviso,

ma piuttosto modificare il codice in modo che l'avviso non venga visualizzato!

NOTA: Non voglio dichiarare le variabili qui (è un file di intestazione), solo definire ciò che la struct 'FOGLIO' dovrebbe includere ...

risposta

20

Elimina typedef. È il modo C per dichiarare le strutture, C++ lo fa automaticamente per te.

+0

Anche questo non funzionerebbe in C. – sth

5

È necessario aggiungere un po 'di identificazione prima della terminazione ; , ad es .:

typedef struct BLAH { ... } BLAH; 
4

Basta rimuovere "typedef". Si dichiara una nuova struttura e la parola chiave typedef non viene utilizzata per quello. Si potrebbe utilizzare typedef per definire un nuovo nome per un tipo esistente, in questo modo:

typedef int number; 
0

Sì, il BLAHdopo la parentesi graffa di chiusura è importante fare la typedef uno valido. È possibile rimuovere SPREADSHEET dal luogo attuale e mantenerlo tra } e ;.

+0

Che dovrebbe essere lasciato come commento, si prega di guadagnare la reputazione richiesta chiedendo e rispondendo alla domanda e rivedere la [FAQ] (http://stackoverflow.com/faq). –

0

La mia interpretazione di questo avviso è che il compilatore sta indicando che la parola chiave typedef non è necessaria perché una variabile non viene dichiarata. e quindi se l'intenzione del codice è semplicemente dichiarare un struct il typedef è superfluo.

Problemi correlati