forumti.gif
@_ö
(10:51)  Bienvenue ! - Inscrivez vous pour poster ! -
Boo, chezmoa, RHJPP, franckyrocky, 55 inconnu(s), 45 bot(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 - 7508
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é)
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./Publicité AdSense
./30
18.06.2001 - 27319
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 !
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./31
18.06.2001 - 27319
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. smile
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./32
18.06.2001 - 27319
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 ^^
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./33
16.06.2001 - 61460
14:37  squalyl - Posté : 31-08-2010  M
ouais, tu vas arriver à des __builtin_va_arg grin

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

./34
18.06.2001 - 27319
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"
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./35
16.06.2001 - 61460
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 - 27319
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 grin
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./37
16.06.2001 - 61460
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 - 27319
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#
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./39
18.06.2001 - 27319
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.
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./40
16.06.2001 - 61460
14:58  squalyl - Posté : 31-08-2010  M
non c'est très chiant les pointeurs de fonction en C

je suis trouducuté là sorry

./41
18.06.2001 - 27319
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##
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./42
18.06.2001 - 27319
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...
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./43
18.06.2001 - 27319
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 grin
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./44
11.06.2001 - 19140
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 - 27319
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.
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./46
11.06.2001 - 19140
23:10  PpHd - Posté : 31-08-2010  M
./47
18.06.2001 - 27319
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 ^^)
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./48
30.06.2001 - 55183
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 ^^
avatar
Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
./49
28.10.2001 - 7508
09:29  Lionel Debroux - Posté : 01-09-2010  M
Oui, bonne suggestion.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./50
16.06.2001 - 61460
09:54  squalyl - Posté : 01-09-2010  M
mission suivante: trouver/builder/installer/exécuter clang.
./51
18.06.2001 - 27319
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.
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./52
30.06.2001 - 55183
10:24  Godzil - Posté : 01-09-2010  M
Il est dans ubuntu au moins
avatar
Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
./53
28.10.2001 - 7508
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 grin

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 grin
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./54
18.06.2001 - 27319
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.
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./55
16.06.2001 - 61460
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 - 27319
12:56  Folco - Posté : 01-09-2010  M
c'est vrai, je suis con #couic#
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./57
16.06.2001 - 61460
14:28  squalyl - Posté : 01-09-2010  M
meuh non, meuh non.
./58
18.06.2001 - 27319
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 ?
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./59
16.06.2001 - 61460
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
69ms | Statistiques