Problème compilation + pointeur de fonction

Nicolas -  
batmat Messages postés 1880 Date d'inscription   Statut Membre -
Bonjour, j'ai un petit problème en essayant d'affecter un pointeur de fonction à une fonction.

-je commence avec ma déclaration du pointeur
int (*tipc_ext_socket)(struct socket*,int,struct proto_ops*);


- ensuite, je déclare ma fonction bidon
int tipc_stream_socket(struct socket* sock, int protocol, struct proto_ops* ops)
{
	return 0;
}


- enfin, je fais l'affectation
tipc_ext_socket = &tipc_stream_socket;


Lors de la compilation, GCC me donne ces erreurs:

src/socket_adaptation.c:226: warning: type defaults to `int' in declaration of `tipc_ext_socket'
src/socket_adaptation.c:226: conflicting types for `tipc_ext_socket'
src/socket_adaptation.c:215: previous declaration of `tipc_ext_socket'
src/socket_adaptation.c:226: warning: data definition has no type or storage class
src/socket_adaptation.c: In function `tipc_socket':
src/socket_adaptation.c:237: called object is not a function
src/socket_adaptation.c: In function `tipc_sk_sendmsg':
src/socket_adaptation.c:510: warning: initialization from incompatible pointer type
make[1]: *** [obj.linuxm/socket_adaptation.o] Error 1

Quelqu'un peut m'orienter sur une piste de solution svp.

Merci beaucoup.
Nic

2 réponses

  1. francoispgp
     
    demande plustot de l'aide sur le forum programmation parceque la peu parmis nous pourront t'aider.
    0
  2. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    Tu n'as pas bien compris le principe d'un pointeur de fonction : ici tu cherches à affecter un type, c'est comme si tu avais écrit :
    int x;
    int=x;


    écrire int (*f) (void) par exemple signifie déclarer le type de fonctions renvoyant int et prenant void en paramètre ...

    compris ?

    @++

    Vous hésitez entre Linux et Windows ?
    Vous voulez dépenser du temps ou de l'argent ?
    0