
Pour faire propre, ce #define doit aller où ?
edit -> je veux dire, dans quel header


lea InitQuitFlag(Pc),a1 tst.b (a1) ; Test if install ? beq.s \no_deinstall
Folco (./28) :
En plus, quand je compile avec "-Wa,-l", il me dit
1. Que j'ai encore de l'espace à gagner avec le switch -l de GAS !!2. Que les ramcalls peuvent pas être relatifs (sans blague) et qu'il les passe en absolu.
Folco (./32) :
Et bien voilà, en une après-midi, j'ai écrit autant qu'en 3 jours d'asm...


-Wextra
This enables some extra warning flags that are not enabled by -Wall. (This option used to be called -W. The older name is still supported, but the newer name is more descriptive.)
Merci à tous.
if(CharY < 30)
{
offset = 30 - CharY;
CharY = 30;
PlanePtr->ys -= offset;
if((signed) PlanePtr->ys < 0)
{
CharY -= PlanePtr->ys;
PlanePtr->ys = 0;
}
==> goto EndCheckLimits;
}
limit = LCD_HEIGHT - 30;
if((unsigned) CharY > limit)
{
offset = CharY - limit;
CharY = limit;
PlanePtr->ys += offset;
if(PlanePtr->ys > ScrollMaxY)
{
CharY -= PlanePtr->ys;
PlanePtr->ys = ScrollMaxY;
}
}
==>EndCheckLimits:
if(CharY < 30)
{
offset = 30 - CharY;
CharY = 30;
PlanePtr->ys -= offset;
if((signed) PlanePtr->ys < 0)
{
CharY -= PlanePtr->ys;
PlanePtr->ys = 0;
}
}
else
{
limit = LCD_HEIGHT - 30;
if((unsigned) CharY > limit)
{
offset = CharY - limit;
CharY = limit;
PlanePtr->ys += offset;
if(PlanePtr->ys > ScrollMaxY)
{
CharY -= PlanePtr->ys;
PlanePtr->ys = ScrollMaxY;
}
}
}
int bla()
{
int ret = 0;
int blabla;
printf(">>%s()", __func__);
blabla = do_that();
if (blabla == fail)
{
ret = -1;
goto exit:
}
do_these();
exit:
printf("<<%s() = %d", __func__, ret);
return ret;
}
int func()
{
int ret = 0;
FILE *fp;
char *toto;
toto = (char*)malloc(128);
if (!toto)
goto bad_exit;
if (!(fp = fopen("thefile.txt", "rt")))
goto free_toto:
do_whatever_we_want();
fclose(fp);
goto exit;
free_toto:
free(toto);
bad_exit:
ret = -1;
exit:
return ret;
}
Godzil (./51) :Euh à part que comme dans l'exemple précédent tu as juste représenté un else par un goto, ça reste un peu débile non ?
La ça peut paraitre ridicule, mais le code est beaucoup plus lisible

Sally (./52) :Godzil (./51) :Euh à part que comme dans l'exemple précédent tu as juste représenté un else par un goto, ça reste un peu débile non ?
La ça peut paraitre ridicule, mais le code est beaucoup plus lisible

int func()
{
FILE *fp;
char *toto;
toto = (char*)malloc(128);
if (toto) {
if (fp = fopen("thefile.txt", "rt")) {
do_whatever_we_want();
fclose(fp);
return 0;
}
else free toto;
}
return -1;
}Bon évidemment le problème c'est que tu veux prendre des exemples simples et que goto n'est utile que dans des cas compliqués, je comprends bien, mais bon 
au moins le label des goto est explicite 
allocation mémoire 1;
if (ok allocation 1)
{
ouverture fichier 1;
if (ok fichier 1)
{
allocation mémoire 2;
if (ok allocation 2)
{
ouverture fichier 2;
if (ok fichier 2)
{
la seule partie utile de cette horrible pyramide de gestion d'erreurs;
fermeture fichier 2;
}
libération mémoire 2;
}
fermeture fichier 1;
}
libération mémoire 1;
}
(j'ai hésité mais je trouvais ça plus clair comme ça)Sally (./46) :
Oui c'est ambigu, donc la solution quand c'est ambigu c'est de rajouter des parenthèses*((short *) FuncPtr)++
La solution du Else est en effet ce qui convient ici. Je n'ai rien contre les goto à priori, je voulais savoir si dans ce cas, je pouvais l'éviter tout en gardant mon optimisation. De toute façon, en assembleur, on fait des goto à la pelle, donc je suis le roi du goto. 
Kevin Kofler (./53) :
Normalement, -Wextra devrait aussi passer avec TIGCC!
Et comme je n'avais pas de warnings supplémentaires, je pensais qu'il ne marchait pas. 