NOTE IMPORTANTE :
j'ai testé les optimisations for() => initialisation + (while ou do {}while(); ) et en fait ça marche terrible !
d'un truc comme
for(i=0: i<nbre_perso; i++)
{
[3]/* mon code*/[/3]
}
passé à :
i = nbre_perso;
while(i)
{
i--; [3]// nb : mettre while(i--) au début coute plus en place que de faire le test tt court
ds le while() et ensuite décrémenter ds la boucle, j'ai regardé
et j'ai donc laissé la décrémentation là[/3]
[3]/* mon code*/[/3]
}
je gagne 8 octets en place rien que pour ça !

bon, après faut faire gaffe que ds notre prog, "partir de 0 et aller à nbre_perso" ne change rien ds la gestion à "partir de nbre_perso et aller à 0"

moi ça change rien de traiter d'abord les dernier perso pour arriver au 1er perso, donc c cool
note : si vous êtes sur que nbre_perso >=1, vous pouvez même passer à :
i = nbre_perso;
do
{
i--; [3]// i-- ici, raison : cf plus haut[/3]
[3]/* mon code*/[/3]
}while(i);
et là on gagne 4 octets de plus qu'un simple while !

soit en tout 12 octets de plus que la for() de départ !

je dis >=1, car le test == 0 du while() n'est fait qu'une fois les instructions de la boucle effectuées une fois au minimum, et on sait jamais, si vous faites un truc du genre tab[i] et que i = -1 (car au début il était égal à 0, soit non >=1), ben ça va pas le faire pour la suite, enfin ds mon code précisemment
Donc si la var d'initialisation est >=1, mettez la méthode do {} while(); , si elle est inférieure à 1 (cad 0 par exemple), mettez plutôt while(i) {} car le test est fait au début, donc pas de prob, les instructions de la boucle ne seront pas executées !
PS : ça marche pas à tous les coups par contre, vérifier bien boucle par boucle que la modif fait gagner de la place, chez moi bizarement pour 1 seule boucle, j'ai rien gagné en place, mais partout ailleurs c 'était + 8 octets !
RIEN A VOIR :
si on met au début du prog :
void mafonction(void); [3]// déclare au tt début avant _main[/3]
et après _main :
void mafonction(void)
{
[3]/* le code*/[/3]
}
est ce que "mafonction" sera obligatoirement incluse ds le prog principal, même si elle n'est appelée à AUCUN endroit dans les autres fonctions du programme ?
car j'avais une fonction comme ça ds mon prog , je l'avais remplacé par une nouvelle (d'un autre nom), mais je l'avais laissé cette 1ère par oubli, et en la virant tt à l'heure, j'ai gagné 1 Ko, et en la remettant je pers 1 Ko.
Normalement, si une fonction est appelée NULLE PART, elle n'est pas incluse au prog lors de la compilation non ? ben là on dirait que si en fait (TIGCC 0.94 b 18).
Je me trompe ?