Hello
Je travaille actuellement avec Apache 2 sur un système Linux. Dans le cadre d'un projet, j'ai crée un module en C pour ce serveur, que je compile avec la commande Make.
Mais lors de la compilation de ce module, j'obtient un warning que je n'arrive pas à résoudre. Voici la description du problème:
Le message est le suivant :
WARNING : assignment makes pointer from integer without a cast
Ce message est généré sur un type de ligne de code en particulier. C'est toujours le même modèle de ligne qui génère ce message. Cette ligne contient toujours une instruction apr_pstrcat. Voici un extrait du code :
new_cookie = apr_pstrcat(r->pool,
COOKIE_NAME, "=", r->uri, "; path=/",
NULL);
Détail assez particulier : lors de la compilation, lorsque l'instruction est répartie sur plusieurs lignes comme dans l'extrait ci-dessus, le compilateur génère le warning sur la ligne contenant le pointeur NULL. C'est pour cette raison que j'ai supposé que c'est le pointeur NULL qui pose problème.
Cependant, j'ai regardé plusieurs autres exemples sur internet. Apparamment, d'après ce que j'ai vu, ma syntaxe semble correcte. Et je n'arrive pas à me débarasser de ce warning.
Quelqu'un peut-il m'aider ?
Merci d'avance.
ap_pstrcat génère un Warning
Modérateur : Modérateurs
Si j'ajoute ceci à ma ligne, le warning disparaît :
new_cookie = (char*)apr_pstrcat(r->pool,
COOKIE_NAME, "=", r->uri, "; path=/",
NULL);
La variable new_cookie est définie comme suit:
char* new_cookie=NULL;
Donc, apparamment, je n'utilise pas le bon format de données. Quelqu'un peut-il me dire quel type de variable je devrais utiliser pour new_cookie : char* et const char* génèrent un warning, ce qui me paraît assez curieux, vu que l'instruction apr_pstrcat a justement été crée pour gérer des chaînes de caractères.
Voici l'exemple fourni par la doc officielle d'Apache 1.3 (Trouvé au lien suivant : <a href='http://httpd.apache.org/dev/apidoc/apidoc_pool.html)' target='_blank'>http://httpd.apache.org/dev/apidoc/apidoc_pool.html)</a> :
pool *p;
char *foo;
foo = ap_pstrcat(p, "string 1", "string 2", null);
Je n'ai malheureusement pas réussi à trouver d' autres informations claires sur le sujet.
new_cookie = (char*)apr_pstrcat(r->pool,
COOKIE_NAME, "=", r->uri, "; path=/",
NULL);
La variable new_cookie est définie comme suit:
char* new_cookie=NULL;
Donc, apparamment, je n'utilise pas le bon format de données. Quelqu'un peut-il me dire quel type de variable je devrais utiliser pour new_cookie : char* et const char* génèrent un warning, ce qui me paraît assez curieux, vu que l'instruction apr_pstrcat a justement été crée pour gérer des chaînes de caractères.
Voici l'exemple fourni par la doc officielle d'Apache 1.3 (Trouvé au lien suivant : <a href='http://httpd.apache.org/dev/apidoc/apidoc_pool.html)' target='_blank'>http://httpd.apache.org/dev/apidoc/apidoc_pool.html)</a> :
pool *p;
char *foo;
foo = ap_pstrcat(p, "string 1", "string 2", null);
Je n'ai malheureusement pas réussi à trouver d' autres informations claires sur le sujet.
attention, cet exemple correspond à une ancienne version de l'APR appremment.
ap_pstrcat n'est pas pareil que apr_pstrcat
Oui, bien sûr, j'en suis conscient.

Donc, si quelqu'un connait une URL où je puisse trouver des réponses à mes questions, il est le bienvenu.
@+
- Madness
- Membre ancien
- Messages : 103
- Inscription : mer. 14 janv. 2004, 11:46
- Localisation : ? sait pas encore
juste en remarque, le coups du numero de ligne pour trouver l erreur sur le NULL ca marche pas.
Car le compilo il donne la ligne ou il en est dans l analyse.
si t avais fini ainsi :
...,NULL
);
il t aurais m is l erreur sur le ); !
de toute facon c est juste un avertissement sur un cast. ca n a d importance si tu utilise des architectures classiques...
je connais un pojet de portage d un programme C d archimede vers PC intel qui à avorté car il utiliser des integers, double ... pour des flags. Mais sur l archimede, toutes ces variables fesais le bouble de bits que leurs correspondant Intel. ca a fini en rapport d'etude pour un portage futur -> grosse reecriture.
Car le compilo il donne la ligne ou il en est dans l analyse.
si t avais fini ainsi :
...,NULL
);
il t aurais m is l erreur sur le ); !
de toute facon c est juste un avertissement sur un cast. ca n a d importance si tu utilise des architectures classiques...
je connais un pojet de portage d un programme C d archimede vers PC intel qui à avorté car il utiliser des integers, double ... pour des flags. Mais sur l archimede, toutes ces variables fesais le bouble de bits que leurs correspondant Intel. ca a fini en rapport d'etude pour un portage futur -> grosse reecriture.
J'adore quand un plan ce déroule sans accros ! (Hannibal A-TEAM)
Revenir vers « Développement Apache »
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité