question sur les pointeurs de fonctions

question sur les pointeurs de fonctions - C - Programmation

Marsh Posté le 28-05-2007 à 00:06:11    

bonsoir;
 
 
Quelqu'un pourrait il m'expliquer ce que veut dire :
 

Code :
  1. void (*signal(int sig, void (*func)(int)))(int);


 
car je ne comprend pas tout. Je cois que signal est un pointeur vers une fonction qui prend en argument un entier et retourne rien. Mais je ne comprend pas les aramètres (int sig, void (*func)(int)) ...
 
merci par avance  :hello:

Reply

Marsh Posté le 28-05-2007 à 00:06:11   

Reply

Marsh Posté le 28-05-2007 à 12:00:07    

ca compile ton truc ?
Si oui, faut vraiment avoir l'esprit tordu, ou avoir des problèmes de conceptions.
Je peux t'explique 'void (*func)(int))'
C'est simple :
*func désigne que c'est un pointeur sur une fonction
Qui renvoi un rien (void)
et qui prends en parametre un int
 
"void (*signal)(" ca, j'aurait compris
"void *signal(" ca aussi, mais
"void (*signal(" me perturbe.. désolé.

Reply

Marsh Posté le 28-05-2007 à 12:24:28    

Ouais ça m'a surpris aussi mais ça compile, et en plus sans warnings (gcc -Wall -c). Je ne comprend pas non plus à quoi correspond cette construction.

Reply

Marsh Posté le 28-05-2007 à 13:49:10    

C'est du C parfaitemnt valide.  
Il y a forcément une documentation sous forme de commentaire, voire une doc d'API propre qq part et qu'il faut que tu te procures.  
Ou au moins, donne un bout de code où c'est utilisé, sinon, c'est le jeu des devinettes.

Reply

Marsh Posté le 28-05-2007 à 14:09:10    

au pif, c'est pour enregistrer un callback sur un signal posix

Reply

Marsh Posté le 28-05-2007 à 15:03:12    

Indépendemment de la façon dont ce code est utilisé, est-ce quelqu'un comprend ce que cette ligne déclare ? Au final signal pointe sur quoi ? Si ça avait été :

Code :
  1. void (*signal)(int sig, void (*func)(int));


j'aurais compris (pointeur vers une fonction qui prend un int et un pointeur vers une fonction qui prend un int), mais là je vois pas.

Reply

Marsh Posté le 28-05-2007 à 16:25:33    

Elmoricq a écrit :

au pif, c'est pour enregistrer un callback sur un signal posix


 
 
oui c'est quelque chose dans le genre, désolé mais je me rappelle plus ou je l'ai trouvé .... :s Je vais chercher

Reply

Marsh Posté le 29-05-2007 à 20:45:50    

Elmoricq a écrit :

au pif, c'est pour enregistrer un callback sur un signal posix


ouais, je voyais aussi un truc de ce genre.

Reply

Marsh Posté le 29-05-2007 à 20:46:50    

et pour répondre à matafan, je ne comprends pas bien cette syntaxe non plus, et je n'ai pas eu le temps de zieuter (en plus le k&r est au boulot)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed