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 ?
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]
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.
Blue_Z> C'est aussi ce qu'il me semble ... ca merite verification ...
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 !
#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)