2011-06-29 9 views
5

Rozwijam swoją aplikację przy użyciu GCC 4.6 do kompilacji, ale użytkownik zgłosił błąd "redefinition of typedef". Po jakimś zamieszaniu gdzie niesłusznie powiedział użytkownikowi pobrać najnowsze źródła używając Git, wziąłem się bliżej i znalazłem coś podobnego do tego:Dlaczego błąd "Ponowne zdefiniowanie typedef" w GCC 4.3, ale nie w GCC 4.6?

/* mystruct.h */ 

#ifdef MYSTRUCT_H 
#define MYSTRUCT_H 

typedef struct _mystruct mystruct 

#endif 



/* mystruct.c */ 
#include "mystruct.h" 

typedef struct _mystruct 
{ 
    int a; 
    int b; 

} mystruct; 

co jest dość łatwe do ustalenia dla starszych wersjach GCC, ale dlaczego czy to już nie jest błąd? Czy to wymaga raportowania?

+0

cant ... czekaj ... aż ... zastąpimy ... preprocesorem C ... z faktycznym ... językiem skryptowym ... jak PHP lub obiektyw C analogowo-analogowy .. – Dmitry

Odpowiedz

5

To wygląda jak deliberate change ...

nie mam 4,6 do rąk, ale wygląda na to dostaniesz ostrzeżenie jeśli używasz -pedantic.