Problème compilation + pointeur de fonction

Fermé
Nicolas - 11 sept. 2003 à 14:55
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 - 12 sept. 2003 à 14:16
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

demande plustot de l'aide sur le forum programmation parceque la peu parmis nous pourront t'aider.
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
12 sept. 2003 à 14:16
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