2009-05-26 8 views
10

To ostrzeżenie jest uruchamiany kilka razy w moim kodzie tym samym zgłoszeniem, który brzmi:Jak mogę usunąć VS ostrzeżenie C4091: „typedef”: ignorowane na lewo od „arkusz kalkulacyjny”, gdy nie zmienna jest zadeklarowana

// 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; 
     } 
}; 

Nie chcę po prostu wyłączyć tego ostrzeżenia,

, ale raczej zmienić kod, aby ostrzeżenie nie pojawiło się!

UWAGA: Nie chcę zadeklarować żadnych zmiennych tutaj (jest to plik nagłówka), tylko określić, co struct „arkusz kalkulacyjny” powinna zawierać ...

Odpowiedz

20

Usuń typedef. Jest to metoda C deklarowania struktur, C++ robi to automatycznie dla ciebie.

+0

To również nie zadziała w C. – sth

5

Trzeba dodać identyfikator przed kończące ; , np .:

typedef struct BLAH { ... } BLAH; 
4

Po prostu usuń "typedef". Deklarujesz nową strukturę, a słowo kluczowe typedef nie jest do tego używane. należałoby użyć typedef zdefiniować nową nazwę istniejącego typu, na przykład:

typedef int number; 
0

Tak, BLAHpo klamra zamykająca jest ważne, aby typedef ważny jeden. Możesz usunąć SPREADSHEET z obecnego miejsca i zachować je pomiędzy } i ;.

+0

To powinno być pozostawione jako komentarz, proszę zdobyć wymaganą reputację, pytając i odpowiadając na pytanie i przeglądając [FAQ] (http://stackoverflow.com/faq). –

0

Moja interpretacja tego ostrzeżenia jest taka, że ​​kompilator wskazuje, że słowo kluczowe typedef nie jest potrzebne, ponieważ zmienna nie jest zadeklarowana. i dlatego jeśli intencją kodu jest po prostu zadeklarowanie struct, to zbędne jest typedef.

Powiązane problemy