struct error



  • Hallo,

    Ich habe folgenden struct deklariert:

    typedef struct {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
    } FILETIME;

    typedef FILETIME *PFILETIME;

    Beim Kompilieren erscheint folgender Fehler:

    ./../GDCore/types.h error: ‘FILETIME’ has a previous declaration as ‘typedef struct FILETIME FILETIME’

    Ist irgend etwas falsch an der Deklaration?? Danke!



  • Versuch mal das hier:

    typedef struct test {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
    } FILETIME;
    
    typedef FILETIME *PFILETIME;
    


  • Unter C++ sollte das eher so aussehen#

    struct FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
    };
    

    Beide Varianten erzeugen eine Instanz einer struct mit dem Namen FILETIME, oben unnamed, unten mit dem Typ test.


  • Administrator

    Hast du zufälligerweise die <windows.h> inkludiert? Denn in der WinAPI gibt es bereits so ein struct:
    http://msdn.microsoft.com/en-us/library/ms724284(VS.85).aspx

    Daher machst du eine redefinition und dein Compiler meckert.

    Im übrigen deklariert/definiert man ein struct in C++ so:

    struct MyStruct
    {
      // ...
    };
    

    Also ohne das typedef. Das mit dem typedef kommt aus C.

    Grüssli



  • Vielleicht noch als Ergänzung:
    Auch wenn man es wie Dravere macht (also modern), muss man im Gegensatz zu C keinen Typbezeichner mehr vor eine Deklaration schreiben.

    struct MyStruct
    {
       // ...
    };
    
           MyStruct A;  // C++
    struct MyStruct B;  // C
    


  • Hallo,

    Danke fuer die vielen Antworten!!

    Auch mit der test-Variabte gibt es den gleichen Fehler.

    <windows.h> habe ich nicht implementiert, da ich das Projekt leider in Linux (Komplikation multipliziert mit 10.000) komplilieren muss.



  • Der Fehler liegt auf jeden Fall nicht (nur) in dem Codestück, dass du uns gegeben hast. Das lässt sich nämlich einwandfrei kompilieren (wenn man sich DWORD definiert)...

    Felix



  • mammamia;



  • mammamia;


Log in to reply