void (*func)(const Arg *arg) w strukturze
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

void (*func)(const Arg *arg) w strukturze

AutorWiadomość
Temat założony przez niniejszego użytkownika
void (*func)(const Arg *arg) w strukturze
» 2020-08-30 18:44:15
Witam serdecznie. Czytając kod dwm (dwm.suckless.org) natrafiłem na takie dziwne coś w strukturze:
C/C++
typedef struct {
    unsigned int click;
    unsigned int mask;
    unsigned int button;
    void( * func )( const Arg * arg ); /* chodzi o tą linię */
    const Arg arg;
} Button;
wcześniej jest jeszcze unia:
C/C++
typedef union {
    int i;
    unsigned int ui;
    float f;
    const void * v;
} Arg;
czy ktoś zdołałby mi wyjaśnić na czym to polega? Myślałem czy nie jest to po prostu rzutowanie, ale dziwi mnie, że po nazwie typu znajduje się tak jakby definicja drugiej zmiennej (
const Arg * arg
)
Pozdrawiam

//PS. - to jest C99
P-177489
» 2020-08-30 19:25:20
To jest wskaźnik na funkcję zwracającą void i przyjmującą jeden argument const Arg*.
P-177490
Temat założony przez niniejszego użytkownika
» 2020-08-30 19:33:28
Dang, dzięki, to by też wyjaśniało dlaczego w pliku konfiguracyjnym możemy dzięki takiej strukturze:
C/C++
typedef struct {
    unsigned int mod;
    KeySym keysym;
    void( * func )( const Arg * );
    const Arg arg;
} Key;
zadeklarować w łatwy sposób bindingi:
C/C++
static Key keys[] = {
    /* modifier                     key        function        argument */
    { MODKEY, XK_p, spawn, {.v = dmenucmd } },
    /* ... */
}

Jeszcze raz dzięki, zamykam i pozdrawiam
P-177491
« 1 »
 Strona 1 z 1