Directive #define
Résolu
choco90
Messages postés
458
Date d'inscription
Statut
Membre
Dernière intervention
-
SypayV Messages postés 7399 Statut Contributeur -
SypayV Messages postés 7399 Statut Contributeur -
Bonjour,
Que fait la directive
Merci de me répondre.
Que fait la directive
#definedans cette ligne:
#define SINK_TRACE_FILE "sink_trace.tr"
Merci de me répondre.
A voir également:
- Directive #define
- Directive européenne - Guide
- Directive produits défectueux 2024 - Accueil - Protection
- No jvm could be found on your system please define exe4j_java_home ✓ - Forum Logiciels
Si on utilise le mot SINK_TRACE_FILE dans le fichier source est ce qu'il sera remplacé par le contenu du fichier sink_trace.tr? Et pourquoi il mettent les guillemets?
C'est vrai. T'as raison. J'aimerais bien utiliser Google et lire des cours et des livres sur C++ mais ça va me prendre beaucoup de temps et moi je travaille sur un projet et je dois faire vite pour comprendre le code source d'un protocole afin de le modifier pour implémenter mon propre protocole et c'est pour cette raison que je me dirige vers les forums c'est pour avoir une réponse rapide, précise et exacte.
Merci pour ton aide. C'est gentil de ta part.
Il y a beaucoup de forums et beaucoup de réponses utiles.
Avec une recherche bien pensée et un entrainement de lecture en diagonale, on a des réponses en moins d'une demie-heure, sans parler des restes qui vont rester dans la mémoire inconsciente et développer notre créativité ...
Bref.
Il ne sera pas remplacé par le fichier.
Je veux dire ... Imagine le compilateur ... Il voit ton fichier source ... Il voit SINK_TRACE_FILE ... Il se dit :
"Heh ! Pu***n, faut remplacer SINK_TRACE_FILE avec "sink_trace.tr" avec les guillemets !
Donc il le fait.
Et si jamais c'était arrivé, imaginons dans la fonction fopen :
Toi, dans ta source, tu vois :
Le compilateur verra :
pFile = fopen ("sink_trace.tr","w");Quel est l’intérêt ?
Très simple.
Tu arriveras bientôt sur un fichier qui inclue 1987 fois le fichier "sink_trace.tr".
Le jour où tu voudras changer "sink_trace.tr" parce que, pour X raisons, il doit changer, bah tu devras le faire 1987 fois. ça te prendra au moins une semaine. Tu auras des ampoules aux mains. Arrêt de travail, etc ...
JAMAIS !
Grâce à la directive, tu changes une ligne, et tout ira avec.
C'est ce qu'on appelle les valeurs magiques.
Il FAUT définir les valeurs magiques avec les directives.
Comme la valeur PI par exemple (atan(0))
Edit : PARDON ! PI=4*atan(1), et merci Google.
Merci infiniment pour ton explication.
Tu m'as énormément aidé :D
- Une constante a besoin d'un type.
- On ne peut pas définir plusieurs fois la même constante, par contre on peut inclure plusieurs fois la même macro contenue dans un .h (Avec les directives que l'on a vu sur l'autre message du forum) = Un seul fichier .h servant à contenir toutes les valeurs magiques.
- Lisibilité du code (Tu n'es jamais seul à programmer ta propre application, même sur une autre planète ...)
- Optimisation (Il peut arriver que la constante passe mal alors qu'avec la macro tout va bien, à cause de la conversion de type).
Etc ...
C'est un choix. IL FAUT TESTER. Il n'y a pas vraiment de règle en programmation. Par contre, il faut savoir choisir la bonne solution et faire des recherches... Et pour ça, il faut connaître tout le processus d'analyse et conception/compilation/fabrication des liens/packaging ... Bref, plus tu en apprendras, par la pratique et la recherche et ... plus tu apprendras ... tout simplement ... C'est un cercle, mais celui-ci n'est pas vicieux.