#define dans une fonction ... - C - Programmation
Marsh Posté le 08-12-2006 à 15:56:37
ca n'a pas de rapport avec la fonction. Au moment où la fonction est compilée, le #define a déjà été remplacé les directives en # ont déjà été remplacées comme il se doit par le pré-processeur
Marsh Posté le 08-12-2006 à 16:03:39
theshockwave a écrit : ca n'a pas de rapport avec la fonction. Au moment où la fonction est compilée, |
Uniquement pour le code qui suit la directive, celui qui le précède n'est pas affecté :
$ cat v1.c |
$ cat v2.c |
J'ai déjà utilisé un #define en milieu de fonction, pour définir une macro temporaire.
Genre au lieu d'écrire, pour une raison x ou y, un truc genre structure.variable.indice.bidule.chose 10 fois dans une fonction, je tape un truc genre :
#define MACHIN structure.variable.indice.bidule.chose |
(l'exemple que je donne ici n'est pas des plus représentatifs, j'ai pas de bon exemple en tête)
Marsh Posté le 08-12-2006 à 16:15:14
Elmoricq a écrit : Uniquement pour le code qui suit la directive, celui qui le précède n'est pas affecté :
J'ai déjà utilisé un #define en milieu de fonction, pour définir une macro temporaire. Genre au lieu d'écrire, pour une raison x ou y, un truc genre structure.variable.indice.bidule.chose 10 fois dans une fonction, je tape un truc genre :
(l'exemple que je donne ici n'est pas des plus représentatifs, j'ai pas de bon exemple en tête) |
undef c important ? je veux dire si on l'oublie est ce que notre programme fait comme dans wars et declare la guerre à la Russie en envoyant un missile nucléaire ??
Marsh Posté le 08-12-2006 à 16:29:21
Non, ce n'est pas important. Seulement voila, à partir du moment où tu définis une macro propre à un bloc de code en particulier, en dehors de ce bloc la macro n'a plus lieu d'être.
Marsh Posté le 08-12-2006 à 16:32:45
Elmoricq a écrit : Non, ce n'est pas important. Seulement voila, à partir du moment où tu définis une macro propre à un bloc de code en particulier, en dehors de ce bloc la macro n'a plus lieu d'être. |
ok, merci
Marsh Posté le 08-12-2006 à 16:54:27
Elmoricq a écrit : Uniquement pour le code qui suit la directive, celui qui le précède n'est pas affecté :
|
ce n'est pas pour autant qu'il y a un rapport avec le fait qu'on soit dans un bloc de fonction. Cette "contrainte" évidente s'applique partout.
Marsh Posté le 08-12-2006 à 17:04:52
theshockwave a écrit : ce n'est pas pour autant qu'il y a un rapport avec le fait qu'on soit dans un bloc de fonction. Cette "contrainte" évidente s'applique partout. |
En effet, c'est pour ça d'ailleurs que je ne l'indente pas comme la fonction.
Je voulais plus compléter ton message qu'autre chose.
Marsh Posté le 09-12-2006 à 01:06:19
in_your_phion a écrit : ...se fesse ?? est-ce utile ou dangereux ? |
Tu peux définir une macro n'importe où (sur une ligne bien à elle quand même).
Elle sera valide jusqu'au prochain #undef de la même macro ou la fin du source.
Il m'arrive de définir des macros 'jetables' comme ceci :
Code :
|
Marsh Posté le 09-12-2006 à 01:50:16
Juste pour dire que #define/#undef ne remet évidemment pas la macro à la valeur qu'elle avait avant de #define (si elle était déja définie).
Marsh Posté le 08-12-2006 à 15:41:17
...se fesse ?? est-ce utile ou dangereux ?
merci par avance