Frage zu typedef struct



  • Hallo, ich bin in der DirectX Bibliothek auf Folgendes gestoßen:

    typedef struct D3DXVECTOR3 : public D3DVECTOR {...} D3DXVECTOR3, *LPD3DXVECTOR3;

    Das Konstrukt "typedef struct Klassenname Klassenname" ist mir bekannt und komm ja daher, dass man in C damals nicht einfach das struct weglassen durfte, wenn man einen struct definieren möchte. Mir ist nun aber nicht klar was in diesem Fall hier "*LPD3DXVECTOR3" bedeutet. Kann mir das jemand erklären? Also ich habe überhaupt gar keine Ahnung was der Bezeichner nach dem Komma für eine Bedeutung hat, warum das gemacht wurde und was man damit bezweckt.

    Ich hoffe es kann mir jemand erklären 🙂

    mfg jessy



  • Das ist effektiv dasselbe wie:

    typedef struct D3DXVECTOR3 : public D3DVECTOR {...} D3DXVECTOR3;
    typedef struct D3DXVECTOR3 *LPD3DXVECTOR3;
    

    Also einmal typedef auf die Struktur, einmal auf einen Pointer auf die Struktur.
    Nur ist es noch in einer Deklaration zusammengefasst, so wie man auch

    int x, *p;
    

    schreiben kann (wenn auch nicht unbedingt sollte.)



  • Ach so, also das man den Pointer nicht mehr mit * sondern mit LP deklariert. Danke, die Notation kannte ich vorher noch nicht

    gruß Jessy


Log in to reply