Directive #define
Résolu/Fermé
choco90
Messages postés
458
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2016
-
25 déc. 2015 à 20:26
SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 - 25 déc. 2015 à 23:34
SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 - 25 déc. 2015 à 23:34
A voir également:
- Directive #define
- Vba #define ✓ - Forum VB / VBA
- Boitier PC DEFINE R5 VS DEFINE R4? - Forum Matériel & Système
- Le fichier téléversé dépasse la directive upload_max_filesize dans php.ini. - Forum Wordpress
- Apache: directive SSLCARevocationFile ✓ - Forum Linux / Unix
- No jvm could be found on your system please define exe4j_java_home ✓ - Forum Minecraft
1 réponse
SypayV
Messages postés
6583
Date d'inscription
vendredi 28 décembre 2007
Statut
Contributeur
Dernière intervention
19 février 2023
449
25 déc. 2015 à 20:30
25 déc. 2015 à 20:30
Bonjour,
Chaque mot SINK_TRACE_FILE sera remplacé par "sink_trace.tr" lors de la compilation.
A l'avenir, utilisez Google. Vos questions ont déjà été posées, et il y a bien d'autres choses à apprendre rien qu'en cherchant ça, des vrais infos croustillantes ;)
Chaque mot SINK_TRACE_FILE sera remplacé par "sink_trace.tr" lors de la compilation.
A l'avenir, utilisez Google. Vos questions ont déjà été posées, et il y a bien d'autres choses à apprendre rien qu'en cherchant ça, des vrais infos croustillantes ;)
25 déc. 2015 à 22:12
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.
Modifié par SypayV le 25/12/2015 à 22:36
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 :
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.
25 déc. 2015 à 23:17
Merci infiniment pour ton explication.
Tu m'as énormément aidé :D
25 déc. 2015 à 23:19
Modifié par SypayV le 25/12/2015 à 23:35
- 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.