Probleme de comprehension de syntaxe

Signaler
Messages postés
19
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
4 février 2009
-
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
-

2 réponses

Messages postés
19
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
4 février 2009

Mon message precedent est tout blanc ... je comprends pas pq ... soit ... voici ma question.

Je tente de comprendre les signaux linux et dans la structure suivante :

struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};

Je ne comprends pas la syntaxe de "void (*sa_handler)(int)", est ce que c'est un prototype de fonction prenant pour parametre un int ne renvoyant rien et casté en *sa_handler ? Ou est le nom de la fonction ? Idem pour "void (*sa_sigaction)(int, siginfo_t *, void *)". On peut mettre des prototypes de fonctions dans des structures ?

Merci
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Ce sont des pointeurs de fonction..

Ex:

void __stdcall Function(LPSTR lpsz)
{
MessageBox(0, lpsz, 0, 0x40);
}

typedef struct _mystruct
{
void (__stdcall *lpFunction) (LPSTR); // pointeur de fonction de type void ayant comme parametre un char*
LPSTR lpsz;
}MYSTRUCT;

char szTest[] = "Test...";

int main(void)
{
MYSTRUCT ms;
ms.lpsz = szTest;
ms.lpFunction = Function;
ms.lpFunction(ms.lpsz);
return 0;
}

Neo_Fr