Вы, скорее всего, хотите, чтобы ваши определения как такового:
#define MONTHS 12
/* some code here... */
int payAnnual = payMonthly * MONTHS;
Чтобы ответить на ваш вопрос, не будет использоваться никакой памяти. Препроцессор не знает о таких понятиях, как переменные и память. Это, по сути, автоматизированный текстовый редактор. Он заменит любое появление символа MONTHS на 12.
Поскольку предварительный процессор настолько тупой, обычно предпочтительнее использовать константную переменную. Это дает вам преимущество проверки типов и облегчает чтение ошибок компилятора. И пока вы объявляете его статическим, переменная будет оптимизирована. (Если вы не объявить глобальную переменную статического в C, по умолчанию, он будет экспортироваться, поэтому компилятор не может оптимизировать его прочь полностью.)
static const int MONTHS = 12;
Если вы говорите о C++, константы имеют локальную связь и, таким образом, не «экспортируются». – 2009-06-29 11:19:26
Это просто заставляет меня думать, что C++ объявляет константу static const int MONTHS = 12 будет выделять размер памяти и будет иметь 12 сохраненных в ней прав? В конце дня константа постоянна и каково было бы преимущество в C++, объявляющее const таким образом, где выделяется память. Просто интересно! – Lakshmi
Компилятор C++ может (и будет) выбирать, чтобы оптимизировать конфигурацию const, если вы не делаете что-то вроде своего адреса. Но если вы хотите спросить о C++, вам будет лучше начать новый вопрос - C и C++ - это разные языки. – 2009-06-29 11:21:27