Vous souhaiterez probablement votre définissent comme tels:
#define MONTHS 12
/* some code here... */
int payAnnual = payMonthly * MONTHS;
Pour répondre à votre question, pas de mémoire sera utilisé. Le pré-processeur ignore les concepts tels que les variables et la mémoire. C'est essentiellement un éditeur de texte automatisé. Il remplacera toute occurrence du symbole MONTHS par 12.
Comme le pré-processeur est si bête, il est généralement préférable d'utiliser une variable const. Cela vous donne l'avantage de la vérification de type et peut faciliter la lecture des erreurs du compilateur. Et tant que vous le déclarez statique, la variable sera optimisée. (Si vous ne déclarez pas statique variable globale en C, par défaut, il sera exporté, de sorte que le compilateur ne peut pas optimiser disparaître entièrement.)
static const int MONTHS = 12;
Si vous parlez de C++, les consts ont un lien local et ne sont donc pas "exportés". –
cela me fait juste penser, C++ déclarant un const const statique MONTHS = 12 allouerait la taille de la mémoire int et aura 12 stockés dans ce droit? A la fin de la journée, la constante est constante et quel serait cet avantage en C++ en déclarant const de cette façon où la mémoire est allouée. Je me demandais juste !! – Lakshmi
Le compilateur C++ peut (et va) choisir d'optimiser le const, à condition de ne pas faire quelque chose comme prendre son adresse. Mais si vous voulez poser des questions sur C++, vous feriez mieux de commencer une autre question - C et C++ sont des langages différents. –