typedef struct x *x_t versteh ich nicht wirklich!



  • Ich habe folgendes Problem, vereinfacht dargestellt.
    **
    typedef struct x x_t;* wobei egal ist was in struct steckt

    und dann eine Funktion, die ich aufrufen muss um etwas anzustoßen.
    **
    open(x_t open);*

    jetzt muss ich x_t in einen Interger casten
    **
    int a=(int) x_t;**

    liegt da jetzt mein Pointer als Int-Wert drin? und zeigt der auf den Wert, der von der Methode open verändert wurde?

    jetzt gibt es noch Methoden die laufen so:
    **
    dosomething(x_t doit);**

    wie bekomme ich das doit hin?

    mit dosomething((x_t)a)?

    ich hoffe das ist zu verstehen.



  • Nightstorm schrieb:

    Ich habe folgendes Problem, vereinfacht dargestellt.
    **
    typedef struct x x_t;* wobei egal ist was in struct steckt

    Damit definierst du "x_t" als "Pointer auf struct x"

    und dann eine Funktion, die ich aufrufen muss um etwas anzustoßen.
    **
    open(x_t open);*

    jetzt muss ich x_t in einen Interger casten
    **
    int a=(int) x_t;**

    liegt da jetzt mein Pointer als Int-Wert drin? und zeigt der auf den Wert, der von der Methode open verändert wurde?

    "x_t" kannst du nicht casten, das ist ein Typ. Aber du kannst eine Variable vom Typ x_t nach int casten - damit erhältst du die numerische Entsprechung der Speicheradresse (wie du die interpretieren mußt, ist Betriebsgeheimnis deines Compilers).

    jetzt gibt es noch Methoden die laufen so:
    **
    dosomething(x_t doit);**

    wie bekomme ich das doit hin?

    mit dosomething((x_t)a)?

    ich hoffe das ist zu verstehen.

    Ja, das sollte gehen.

    PS: Aber statt der Cast's ist es besser, dir gleich eine Variable vom richtigen Datentyp anzulegen und weiterzureichen.



  • Leider sind beide Schnittstellen festgelegt.

    *edit* war Schwachsinn. Sollte erst zweimal lesen, und dann antworten.

    Danke für die Antwort.


Anmelden zum Antworten