C'est quoi cette declaration C ? - C - Programmation
Marsh Posté le 10-08-2004 à 19:04:05
subaddr est un pointeur sur une fonction, c'est ce que tu voulais savoir ?
Marsh Posté le 10-08-2004 à 19:04:10
un pointeur de fonction
void fonction(pTHX_ CV *cv);
en gros, c'est un callback
Marsh Posté le 10-08-2004 à 19:05:52
Joce qui tiens à débugguer chaque programme qui lui passe entre les mains.
Marsh Posté le 10-08-2004 à 19:09:52
les pointeurs de fonctions ont cela de marrant que
*f == f donc f() == *************************f()
Marsh Posté le 10-08-2004 à 19:30:48
ceci dit je comprends toujours pas la syntaxe de la déclaration
Marsh Posté le 10-08-2004 à 19:41:07
|
me dis pas que tu as jamais utilisé qsort ?
Marsh Posté le 10-08-2004 à 20:13:59
si j'ai déjà vu qsort.
ca m'aide pas plus ton truc
le pTHX_ CV *cv il signifie quoi en pratique
cv est de quel type
Marsh Posté le 10-08-2004 à 20:15:26
je sais pas c'est juste que c'est un pointeur de fonction retournant void et acceptant en paramètre un pointeur (ici argument nommé cv), pointeur sur pTHX_CV
Marsh Posté le 10-08-2004 à 20:21:00
ce qui m'ennuie c'est l'espace entre pTHX_ et CV en fait, c'est ca que je capte pas depuis le debut, pour le reste les pointeurs sur fonction je connais
Marsh Posté le 10-08-2004 à 20:22:59
merde j'avais pas vu
gcc -E
y a fort a parier que CV est une macro de const
Marsh Posté le 10-08-2004 à 20:25:21
Le code de Perl est bourré de macros.
Marsh Posté le 10-08-2004 à 20:25:49
j'avais pensé aussi à une macro, mais j'en avais pas vu la trace, j'ai du la louper.
En tout cas gcc n'était pas content du tout :
In file included from perl.c:93:
perl-common.h:28: parse error before `CV'
perl.c:214: parse error before `CV'
perl.c: In function `gaim_perl_callXS':
perl.c:219: `aTHX_' undeclared (first use in this function)
perl.c:219: (Each undeclared identifier is reported only once
perl.c:219: for each function it appears in.)
perl.c:219: parse error before `cv'
perl.c: In function `destroy_package':
perl.c:403: warning: passing arg 1 of `Perl_newSVpv' discards qualifiers from pointer target type
gmake[3]: *** [perl.lo] Error 1
gmake[3]: Leaving directory `/home/fournier/gaim/gaim-0.81/plugins/perl'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/home/fournier/gaim/gaim-0.81/plugins'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/fournier/gaim/gaim-0.81'
gmake: *** [all] Error 2
Marsh Posté le 10-08-2004 à 20:26:39
el muchacho a écrit : gaim_perl_callXS est une fonction qui accepte en argument : |
ca te choque pas un type "pTHX_ CV" toi ? moi si
Marsh Posté le 10-08-2004 à 20:28:21
joce a écrit : ca te choque pas un type "pTHX_ CV" toi ? |
Merde, tu m'as lu avant que j'efface mon pipo.
Ben macro, quoi ! Le code de Perl en est bourré.
Marsh Posté le 10-08-2004 à 20:28:49
Taz a écrit : envoie un rapport de bug |
encore
ca fait le deuxième client que je compile et où il avait une erreur
dans le premier (clientIcq dernier version) ils utilisaient une variable qu'ils ne déclaraient que quand on avait HAVE_OPENSSL, donc forcement le compilo était moyennement content sans ca
Marsh Posté le 10-08-2004 à 20:29:52
el muchacho a écrit : Merde, tu m'as lu avant que j'efface mon pipo. |
donc ma première pensée était la bonne
J'ai eu un doute à un moment en pensant à une declaration obscure du C que je connaissais pas
Marsh Posté le 10-08-2004 à 20:36:44
joce a écrit : encore |
"BugHunter"
Faut croire que ta réputation te poursuit.
Marsh Posté le 10-08-2004 à 19:00:01
void gaim_perl_callXS(void (*subaddr)(pTHX_ CV *cv), CV *cv, SV **mark);
le pTHX_ CV *cv
en tout cas le compilo gcc 2.95.4 n'aime pas du tout cette syntaxe, ca correspond a quoi