[C] #define ou const

Fermé
Onde2Choc Messages postés 299 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 24 février 2006 - 7 août 2004 à 16:25
 Utilisateur anonyme - 7 août 2004 à 18:27
En langage C, quelle est la différence entre
#define nomconstante valeurconstante;
et
const typeconstante nomconstante = valeurconstante;
? La différence se situe-t-elle seulement au niveau de leur syntaxe ?


BOOM !
Onde2Choc, pour ne pas vous servir...

1 réponse

Utilisateur anonyme
7 août 2004 à 18:03
Bonjour,

Extrait de mon bouquin :-)

Les constantes symboliques permettent au programmeur de créer un nom pour une constante et d'utiliser ce nom tout au long du programme. Si la constante doit être modifié au sein du programme, il suffit de la modifier une seule fois dans la directive de précompilation #define; lorsque le programme est recompilé, toutes les occurences de la constante dans le programme sont automatiquement modifiés. Remarque : Tout ce qui se trouve à droite du nom de la constante symbolique remplace la constante symbolique. Ainsi, #define PI = 3.14159 entraîne le remplacement de chaque occurence de PI par = 3.14159. Ceci est la cause de nombreuses et subtiles erreurs de logique et de syntaxe. Le fait de redéfinir une constante symbolique par une nouvelle valeur est également une erreur. Notez qu'en C++ les variables const ont la préférence sur les constantes symboliques. Les variables constantes ont un type de donnée spécifique et sont visibles par leur nom pour un débogueur. Dès qu'une constante symbolique est remplacée par son texte équivalent, seul le texte de remplacement est visible au débogueur. Un inconvénient des variables const est qu'elles peuvent exiger un emplacement mémoire de la taille de leur type de donnée, tandis que les constantes symboliques ne requiert pas de mémoire supplémentaire.

Lupin
10
Utilisateur anonyme
7 août 2004 à 18:27
re:

Réf:

Deitel et Deitel
C++ Comment Programmer
Troisième Édition
(Introduction à la conception orientée objets avec l'UML[TM])
Éditeur : Les Éditions Reynald Goulet INC.

Lupin
0