Probleme de comprehension de syntaxe

AsM0DeUz Messages postés 19 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 4 février 2009 - 9 juil. 2008 à 14:18
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 9 juil. 2008 à 16:18

2 réponses

AsM0DeUz Messages postés 19 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 4 février 2009
9 juil. 2008 à 14:55
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
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
9 juil. 2008 à 16:18
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
0
Rejoignez-nous