1

Est-ce qu'il existe ds TIGCC une option ou une manip ou je ne sais quoi d'autre, qui permette d'ignorer facilement plusieurs lignes à la compilation, mais qui avec un simple changement les réactive ?
Par exemple :
#DEFINE je_sais_pas_koi void _main(void) { instruction 1 instruction 2 instruction 3 instruction 4 }

Est-ce qu'il serait possible, en ne changeant que le défine en haut, de faire ignorer à TIGCC les instructions 1 et 3 par exemple ?
Je suis pas sur que mon explication soit très claire...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

-

3

Ah oué tu veux dire ça :

- au début du prog
#define qqchose (ou pas)

- et ensuite autours de chaque instruction
#ifdef qqchose
instruction
#endif

?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Exactement, c'est les instructions du préprocesseur C qu'il faut utiliser puisque tu ne veux pas que ces instructions là soient compilées.
J'ai fait un exemple qui marche si tu veux, je peux te mettre la source, mais je pense que tu pourras te débrouiller tout seul !
avatar
;)

5

#define #ifdef #ifndef #else #endif sont des directives du préprocesseur.

Le préprocesseur est un programme qui est appelé avant le compilateur proprement dit (théoriquement, car certains compilateurs entrelacent la précompilation avec la compilation) et qui rend en sortie LE fichier qui sera compilé. Le préprocesseur effectue principalement ces opérations, à partir du fichier source vers LE fichier qui sera envoyé au compilateur :

- bien évidemment, recopier le fichier source, sauf les lignes situées entre un #ifdef ou un #ifndef dont la condition serait fausse et le #else ou le #endif correspondant ;
- remplacer les constantes (ce qu'on déclare avec #define) par leurs valeurs, aux endroits où elles sont utilisées dans le source ;
- recopier tel quel le contenu des fichiers inclus avec #include à l'endroit même de cette directive.

Pour que le préprocesseur ignore certaines lignes, il faut donc placer celles-ci entre un #ifdef ou un #ifndef dont la condition est fausse et un #else ou un #endif.

#ifdef signifie "si cette constante est définie, copie ce qui suit, sinon ignore tout jusqu'au #endif ou #else correspondant"
#ifndef signifie "si cette constante n'est pas définie, copie ce qui suit, sinon ignore tout jusqu'au #endif ou #else correspondant"

Par exemple, dans ce code tout va être compilé :
#define PROUT

void _main(void)
{
  instruction 1
  #ifdef PROUT
    instruction 2
    instruction 3
  #endif
  instruction 4
}

Mais dans celui-ci, seules les instructions 1 et 4 vont être compilées :
//#define PROUT

void _main(void)
{
  instruction 1
  #ifdef PROUT
    instruction 2
    instruction 3
  #endif
  instruction 4
}
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

6

ok, et dans le cas de

//#define PROUT

void _main(void)
{
instruction 1
#ifdef PROUT
instruction 2
instruction 3
#endif
instruction 4
}


le programme compilé n'est pas plus gros qu'en écrivant :

void _main(void)
{
instruction 1
instruction 4
}


?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

C'est exactement ça !
Le préprocesseur ignore tes instructions si PROUT n'est pas defini. Il fait comme si les lignes n'avaient jamais existées
Mon site perso : http://www.xwing.info

8

Le compilateur, pas le préprocesseur !
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

9

Impec ça marche top
Merci smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)