1

Pour testet, je déclare deux fonctions en inline dans mon programme mais le fichier 89z ne bouge pas d'un iota et je retrouve les 2 fonctions séparées dans le fichier ASM.
But why ?

2

1. inline est une mauvaise idée sur calculatrice! (Ça augmente la taille.)
2. inline suppose le switch -O3 et est ignoré avec -O2. Encore une fois, le switch -O3 est déconseillé sur calculatrice pour des raisons de taille!
3. Il y a une méthode beaucoup plus propre pour les fonctions inline (même si déconseillée également pour l'usage intensif pour des raisons de taille): utilise une macro.
Par exemple
#define inline_function(x,y,z) {int a;
a=x*y;
z+a;}

[edit]Edité par Kevin Kofler le 09-07-2001 à 20:45:25[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

La taille n'a pas d'importance puisque la fonction n'est appelée qu'une seule fois par boucle.
Je voulais utiliser une fontion inline pour une simple raison de simplification d'écriture, une fontion étant plus claire qu'une macro.
Mais bon, on peut changer !grin

4

Il me semblait que le inline était pris en compte dans tous les modes de compilation, le propre du -O3 étant de rendre des fonctions inline automatiquement, à l'insue du programmeur. A ce propos, en -O3 les fonctions sont rendues inline à partir du moment où elles font moins de 10 ko, ce qui est clairement démesuré pour une calculatrice.

5

Blue_Z> C'est aussi ce qu'il me semble ... ca merite verification ...

6

Je viens de relire la documentation de TIGCC et en effet, inline est pris en compte dès que l'on met -O, donc aussi avec -O2. Il y a aussi des cas où inline ne peut pas marcher, et on peut recevoir des warnings pour ces cas en utilisant le switch -Winline. Cf. http://tigcc.ticalc.org/doc/gnuexts.html#SEC93.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Bon j'ai mis mes 2 focntions en macro, curieusement le fichier devient plus gros !
Pourtant je ne l'appelle qu'une fois la fonction !

8

#define pseudo_fct(a,b) ({int c=3;
c+b+a; /*la dernière expression équivaut à la valeur de la fonction*/
})

...
x=pseudo_fonction(3,4)
...

par contre faut faire attention au type (y a des astuces pour ça)

9

oui mais c + zoli