cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
21 févr. 2008 à 09:04
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
22 févr. 2008 à 14:31
Salut,
J'utilise la fonction registerrpc, et lorsque je compile avec les options habituelles (-Wall -ansi -pedantic), j'obtiens le warning suivant :
warning: implicit declaration of function `registerrpc'
Ce warning arrive habituellement quand on a pas déclaré le prototype de la fonction.
Donc qu'on a oublié le .h qui déclare cette fonction.
Le truc, c'est que le .h en question, je le cherche encore...
J'ai cherché dans tout /usr/include sans résultat.
Je songe à déclaré moi même le proto, mais bon ce serait pas top...
Donc voilou, si quelqu'un à une idée, merci.
Un code de test.
Il est incomplet, mais il compile alors qu'il devrait pas : il devrait
faire une erreur too few arguements, mais à la place, il me fait une
implicit declaration.
#include <errno.h>
#include <netinet/in.h>
#include <netdb.h>
#include
#include <rpc/types.h>
#include <rpc/xdr.h>
#include <rpc/rpc.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/select.h>
#include <sys/socket.h>
#include
int main()
{
registerrpc();
return 0;
}
A voir également:
Implicit declaration of function
Implicit declaration of function c - Meilleures réponses
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 21 févr. 2008 à 11:11
registerrpc a des paramètres
registerrpc(prognum, versnum, procnum, procname, inproc, outproc) (d'apres ton lien)
donc tu ne peux pas appeller ta fonction sans paramètres.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 21 févr. 2008 à 17:22
Merci pour cette première réponse.
Vi vi, bien sûr que registerrpc a des paramètres.
J'ai eu la flemme de copier coller tout mon code sur ce site vu que
c'est du rpc et que ça demande pas mal de trucs à droite et à gauche à
mettre dans les paramètres.
Cependant, le code ci-dessus est suffisant pour s'apercevoire qu'il y a un problème :
Il compile avec le warning "implicit declaration", alors qu'il devrait faire une erreur de compilation avec le message "too few arguements".
Bref, le code ci-dessus est suffisant pour constater que registerrpc n'est déclarée nul part...
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 févr. 2008 à 11:02
En concaténant calc_h.h et server.c dans un même fichier, avec une compilation avec options -Wall -pedantic, je me bouffe :
main.c:20: warning: return type defaults to `int'
main.c: In function `xdr_varintarr':
main.c:21: warning: pointer targets in passing arg 3 of `xdr_array' differ in signedness
main.c:31:1: warning: C++ style comments are not allowed in ISO C90
main.c:31:1: warning: (this will be reported only once per input file)
main.c: In function `main':
main.c:32: warning: implicit declaration of function `registerrpc'
Bref, la question reste entière : pourquoi diable n'ont ils pas mis le prototype de registerrpc dans rpc.h ou autre ?
J'ai finalement mis le proto dans mon propre code, mais je comprend vraiment pas pourquoi j'aurais à le faire :