limmt Le 27/07/2004 à 16:38 j'aimerais faire un pointeur vers une fonction mais cette fonction prend des arguments? comment mettre ca dans le pointeur?
char start(char *);
je met ca mais TIGCC renvoie Field start declared as a function.
Wenn ich morgen meinem Gott gegenübertrete, kann ich ihm sagen: "Ich bin unschuldig, ich hab' niemandem etwas getan - außer mir selben" Und das verzeiht er mir offentlich !
Falco - Hans Hölzel 1957 - 1998
RIP
aze Le 27/07/2004 à 16:48 tu dois déclarer ton pointeur de fonction comme ca :
char (*start)(char*);
car c'est un pointeur vers un truc qui renvoit un char
et tu n'es même pas obligé de déclarer les types des arguments du pointeur de fonction je crois
char (*start)(); devrait suffire
Parce que tu ne dis pas que c'est du stkparm...
KK> unsigned int *, plutôt ^^
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Euh, oui, je ne sais pas d'où j'ai sorti mon char...
aze Le 27/07/2004 à 17:37 je n'avais pas pensé à ca
aze Le 27/07/2004 à 21:33 c'est un attribut de la fonction qui dit que ses parametres lui seront passé par la pile
(et non par des registres comme avec regparm)
(regarde __attribute__dans la doc de tigcc)
De toute façon, c'est la convention par défaut. (Mais ça peut se changer par des paramètres en ligne de commande.)
aze Le 28/07/2004 à 00:30 un pointeur de fonction ou une fonction est stkparm par defaut ?
(les romcalls sont bien stkparm aussi ?)
Si. Les fonctions sont stkparm par défaut, mais tu as quand-même un warning si tu prends une fonction avec __attribute__((stkparm)) et tu la mets dans un pointeur sans cet attribut, parce que si tu compiles avec -mregparm, tu auras un problème si tu fais ça.
Et en stkparm, le code est bien plus gros ^^
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Oui, -mregparm est une manière intéressante d'optimiser un programme. Expérimentez avec différentes valeurs pour n dans -mregparm=n.
comment ça ça marche pas ?
ça retourne une erreur à la compilation?
ça plante ?
Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
bidoo Le 18/08/2004 à 15:32 sur 40 essai ca a planté 3 fois
bidoo Le 18/08/2004 à 15:44 ah non, c'etait du a un autre probleme en fait ... (enfin je crois.)
sinon quelle la syntaxe pour declarer un tableau de pointeur de fonction (toutes ressemblant à void function(void))?
Le mieux c'est encore de faire un typedef si tu manipules bcp de pointeurs sur fonction identiques.
bidoo: vire ça : __attribute__((stkparm))
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Essaye void (__attribute__((stkparm))*add)(void); ou void (*__attribute__((stkparm))add)(void);. (Je ne sais plus lequel c'est, mais un des 2 devrait être bon.)
je crois que c le premier...
bidoo> là tu fais un pointeur stkparm à partir d'une fonction qui n'est pas stkparm, c très mauvais... si ton pointeur n'est là que pour être utilisé en interne, n'utilise pas du tt de stkparm, sinon mets aussi un stkparm dans la déclaration...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
bidoo Le 19/08/2004 à 11:09 pollux >> oui en fait je l'avais mis : ds mon copier coller j'ai pas pris la ligne au dessus de add_(void).
kevin >> aucune des syntaxes ne fonctionne, mais ce n'est pas grave, apres de nbreux essai je n'ai pas eu de probleme.
spectras >> tu as tutafé raison, j'avais pas pensé a ca ..
mci pour tout