question sur les pointeurs de fonctions - C - Programmation
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é.
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.
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.
Marsh Posté le 28-05-2007 à 14:09:10
ReplyMarsh 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 :
|
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.
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
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.
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)
Marsh Posté le 28-05-2007 à 00:06:11
bonsoir;
Quelqu'un pourrait il m'expliquer ce que veut dire :
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