DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 20 juil. 2010 à 15:45
Salut,
D'un point de vue utilisation, les deux sont identiques et ont le meme but : deéfinir une valeur non modifiable.
D'un point de vue compilation, toutes les instance de #define sont remplacées dans le code lors de la generation du binaire.
A l'inverse le const est alloué dynamiquement lors de son utilisation.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 20 juil. 2010 à 16:31
Lorsque tu programme tu écrit des lignes de codes, ensuite le compilateur prend ces lignes et les transforme en code binaire pour créer un executables.
Les #define sont comme des macros, c'est a dire que tout les endroit dans ton code ou le define est utilisé seront remplacé par la valeur du define au moment de la compilation.
Exemple :
#define MY_DEF 10
...
if(myInt == MY_DEF) {...}
A la compilation, le compilateur va supprimer la declaration du #define et transformer le code comme suit :
if(myInt == 10) {...}
A l'inverse le CONST ne sera jamais remplacé durant la compilation.
Il sera alloué lors du lancement de ton programme deja compilé.