img
@_ö
(21:00)  Bienvenue ! - Inscrivez vous pour poster ! -
@Boo + 6 inconnu(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « Précédent - 2/7 - Suivant » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (204r) » Ecriture bien spécifique de code C
./29 - REPRISE AUTOMATIQUE DU MESSAGE PRECEDENT
28.10.2001 - 7382
18:56  Lionel Debroux - Posté : 30-08-2010  M

D'après la doc de TIGCC/GCC4TI,
int (*x[5])(); An array of pointers to a function which returns an integer

La version avec une taille indéfinie de tableau de cette écriture doit être
int (**x)()

Et un pointeur sur ce truc doit être
int (***x)()


(non testé)


Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
./Publicité AdSense
./30
18.06.2001 - 25129
18:57  Folco - Posté : 30-08-2010  M

Ah, ça s'écrit comme ça ? Un pointeur sur un pointeur de fonction en effet... Merci beaucoup !


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./31
18.06.2001 - 25129
18:59  Folco - Posté : 30-08-2010  M

Anéfé, ça marche comme ça :
int pdtlib__ManageArgs (CMDLINE* CmdLine, const char* OptList, void (**FuncList)(), void (*Fallback)()) 
{ 
  FuncList[OptCount](); 
}

Je vais lire le code pour voir si c'est bien ça que j'attends. :)


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./32
18.06.2001 - 25129
14:29  Folco - Posté : 31-08-2010  M

Pwic


J'ai écrit ce proto :
int pdtlib__ManageArgs (CMDLINE* CmdLine, const char* OptList, int (*Callback)(int Status), void (*SwitchFunc)(char Sign), ...)

Puis j'initialise la liste d'arguments variables ainsi :
	va_list FuncList; 
    va_start(FuncList, SwitchFunc);

Enfin, j'essaye d'appeler une des fonctions contenue dans cette liste variable :
    va_arg (FuncList, (*))(Sign);            // Sign est un char

Mais bon, visiblement, c'est pas comme ça qu'il faut lui parler... Peut-être que ma manière de passer le type à va_arg [(*)] est mauvais ?

C'est la première fois que j'utilise les va_*. J'y avais jamais pensé, mais si j'arrive à faire marcher ça, c'est surpuissant.

ps -> j'ai regardé les macro dans stdarg.h, j'ai... euh... pas tout compris ^^


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./33
16.06.2001 - 58993
14:37  squalyl - Posté : 31-08-2010  M

ouais, tu vas arriver à des __builtin_va_arg :D

c'est quoi cette étoile toute seule entre parenthèses?



./34
18.06.2001 - 25129
14:38  Folco - Posté : 31-08-2010  M

C'est, en soi, un pointeur sur une fonction (sans nom). Je sais pas comment lui dire que le type de donnée dans la liste, c'est "pointeur de fonction"


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./35
16.06.2001 - 58993
14:39  squalyl - Posté : 31-08-2010  M

toute fonction implique une paire de parenthèses pour les arguments mon cher.

va_arg (FuncList, (*)())(Sign);

(je crois, hein)


./36
18.06.2001 - 25129
14:44  Folco - Posté : 31-08-2010  M

Ca marche pas mieux.
Et même

va_arg(FuncList, void*)(Sign);

ne marche pas :/ Je suis vraiment pas fort pour exprimer en C ce que je pense :D


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./37
16.06.2001 - 58993
14:45  squalyl - Posté : 31-08-2010  M

pour comprendre:

void (*ptr)(void) = va_arg(FuncList, void(*)(void));
ouzencor
void (*ptr)() = va_arg(FuncList, void(*)());

puis:
ptr();

?

donc le type c'est void(*)()

et tu dois pouvoir compacter en

va_arg(FuncList, void(*)())(Sign);

ou avec un cast

(void(*)())va_arg(FuncList,void*)();


./38
18.06.2001 - 25129
14:49  Folco - Posté : 31-08-2010  M

Non plus. J'ai essayé au pif des dizaines d'écritures, je suis pas tombé sur la bonne encore #triso#

Je vais coder un générateur aléatoire d'écritures pifométriques pour me simplifier les choses #trioui#


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./39
18.06.2001 - 25129
14:51  Folco - Posté : 31-08-2010  M

./37 -> failed && failed :
args.c:71: error: called object '*((FuncList = (FuncList) + 4u) - 4u)' is not a function

Je suis "content" de voir que je ne suis pas le seul à galérer pour mettre en forme une simple écriture. Ca doit pas être évident en fait.
Dire qu'en asm, c'est un movea.l 0(sp,d0.w),a0 // jsr (a0)
Et après on dit que le C est simple et l'assembleur difficile #black#

Edité par Folco le 31-08-2010 à 15:02:04.

<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./40
16.06.2001 - 58993
14:58  squalyl - Posté : 31-08-2010  M

non c'est très chiant les pointeurs de fonction en C

je suis trouducuté là :S



./41
18.06.2001 - 25129
15:05  Folco - Posté : 31-08-2010  M

stdarg.h : 
 
#define va_arg(ap,type) (*(type*)((((char*)(ap))+=((sizeof(type)+1)&0xFFFE))-(((sizeof(type)+1)&0xFFFE))))

Si ça peut aider triprie


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./42
18.06.2001 - 25129
17:00  Folco - Posté : 31-08-2010  M

Et j'y arrive pas. Faut dire que google(va_arg, function, list) renvoie une plétore de réponses évidemment...


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./43
18.06.2001 - 25129
22:13  Folco - Posté : 31-08-2010  M

Bon, il est 23h passé, tous les poids lourds sont passés ici, et pas de réponse à ./32
J'en conclus que la réponse ne doit pas être si évidente :D


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./44
11.06.2001 - 19034
22:20  PpHd - Posté : 31-08-2010  M

Folco (./32) :
Pwic


J'ai écrit ce proto :
int pdtlib__ManageArgs (CMDLINE* CmdLine, const char* OptList, int (*Callback)(int Status), void (*SwitchFunc)(char Sign), ...)

Puis j'initialise la liste d'arguments variables ainsi :
	va_list FuncList; 
    va_start(FuncList, SwitchFunc);

Enfin, j'essaye d'appeler une des fonctions contenue dans cette liste variable :
    va_arg (FuncList, (*))(Sign);            // Sign est un char

Mais bon, visiblement, c'est pas comme ça qu'il faut lui parler... Peut-être que ma manière de passer le type à va_arg [(*)] est mauvais ?

C'est la première fois que j'utilise les va_*. J'y avais jamais pensé, mais si j'arrive à faire marcher ça, c'est surpuissant.

ps -> j'ai regardé les macro dans stdarg.h, j'ai... euh... pas tout compris ^^

Tu veux faire quoi ?
Sign = va_arg (FuncList, (char));
(*SwitchFunc) (Sign);
?



./45
18.06.2001 - 25129
22:26  Folco - Posté : 31-08-2010  M

Il y a sur la pile une liste d'adresse de fonctions, dont SwitchFunc est le premier élément. Je veux juste pouvoir appeler ces fonctions.

C'est comme si, en asm, je faisais ça :
programme appelant : 
 
 pea func3(pc) 
 pea func2(pc) 
 pea func1(pc) 
 jsr lib::ManageArgs

Et dans lib::ManageArgs :
 movea.l x(sp),a0 
 pea Sign(pc)          ; à la rigueur, ça on s'en fout 
 jsr (a0)

C'est ce movea/jsr que je n'arrive pas à écrire.


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./46
11.06.2001 - 19034
23:10  PpHd - Posté : 31-08-2010  M




./47
18.06.2001 - 25129
23:27  Folco - Posté : 31-08-2010  M

hmmm merci beaucoup, encore un truc à apprendre, mais ça a l'air de ressembler à ce que je veux #top#

C'est con, trois lignes d'asm et c'est réglé, mais j'ai envie de rester portable (juste pour dire que c'est portable ^^)


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./48
30.06.2001 - 52813
08:53  Godzil - Posté : 01-09-2010  M

Folco: si tu as un doute sur les warning/errors de gcc & consorts, fait passer ton code dans clang, les messages risquent d'etre moins cryptique ^^ Et si ils le sont, il faut le leur dire ^^


Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-

./49
28.10.2001 - 7382
09:29  Lionel Debroux - Posté : 01-09-2010  M

Oui, bonne suggestion.


Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
./50
16.06.2001 - 58993
09:54  squalyl - Posté : 01-09-2010  M

mission suivante: trouver/builder/installer/exécuter clang.


./51
18.06.2001 - 25129
09:56  Folco - Posté : 01-09-2010  M

Ah, un front-end de llvm... M'étonnerait que Debian le propose ce soft, on va voir si la Fée Dora peut me le faire apparaitre.


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./52
30.06.2001 - 52813
10:24  Godzil - Posté : 01-09-2010  M

Il est dans ubuntu au moins


Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-

./53
28.10.2001 - 7382
10:28  Lionel Debroux - Posté : 01-09-2010  M

Debian testing peut te faire apparaître une version récente de ce soft. Debian stable, en revanche, pas du tout :D

http://clang.llvm.org/get_started.html#build pour compiler clang+llvm toi-même. Peu après la release 2.7, j'avais utilisé le tag 2.7 au lieu du trunk, mais maintenant que la release 2.8 est proche (création de la branche des pre-releases cette semaine), utiliser le trunk est moins aventureux :D


Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
./54
18.06.2001 - 25129
11:05  Folco - Posté : 01-09-2010  M

Ouep... rah ça fait chier, ce code est fait pour être compilé par tigcc (_library etc...). il me faudra faire un fake main juste pour sa gueule. C'est quand même casse-couilles. Je me demande si je ne vais pas coder toute cette fonction en asm, ça sera bien plus simple, court et rapide.


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./55
16.06.2001 - 58993
11:53  squalyl - Posté : 01-09-2010  M

pourquoi il faudrait un fake main? compiler un programme pour voir l'asm généré ne requiert pas d'édition de liens, donc t'auras pas besoin de main...


./56
18.06.2001 - 25129
12:56  Folco - Posté : 01-09-2010  M

c'est vrai, je suis con #couic#


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./57
16.06.2001 - 58993
14:28  squalyl - Posté : 01-09-2010  M

meuh non, meuh non.


./58
18.06.2001 - 25129
16:28  Folco - Posté : 01-09-2010  M

Putain de saloperie de bordel de mes trois.
En fouillant dans mon bouquin, je trouve ça :
void va_start (va_list params, identifiacteur); (stdarg.h) 
 
Cette macro initialise le parcourT (sic) de la liste d'argument variables params, sachant que 
identificateur est le nom du dernier argument muet fixe. Celui-ci ne doit pas être de la classe 
registre, NI DE TYPE FONCTION, sous peine d'aboutir à un comportement indéterminé.

Fais chier de merde !
J'ai toujours moyen de remplir un handle avec des pointeurs de fonctions, mais si techniquement c'est faisable proprement, esthétiquement c'est immonde, et moralement répréhensible.

Auriez-vous une idée valable ?


<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./59
16.06.2001 - 58993
16:36  squalyl - Posté : 01-09-2010  M

int pdtlib__ManageArgs (CMDLINE* CmdLine, int (*Callback)(int Status), void (*SwitchFunc)(char Sign), const char* OptList, ...)

?


./Publicité AdSense
 « Précédent - 2/7 - Suivant » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (204r) » Ecriture bien spécifique de code C

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
40ms | Statistiques