Массив констант и директива #define.
В любом случае, правильнее объявить константную переменную (const int array[6] = {...}). Для величин тоже #define-ы не использовать. Либо const, либо, если не хочется эту константу хранить в одном месте, то для ordinal-типов можно использовать enum'ы (enum {myval=65535};). Большой плюс этих решений перед #define'ами в том, что они обрабатываются компилятором, а не препроцессором, соответственно для них работают области видимости.
ещё один укурок =)

#define ITERATE(x) x, x + 1
#define FOUR(x) ITERATE(x ITERATE(x+2)
#define EIGHT(x) FOUR(x FOUR(x+4)
array[6] = {FOUR(1 ITERATE(5)};
Да, если кому интересно, за что я так люблю дефайны, я функционально программировать учился на языке Рефал-5 (если не Рефал-2). А до того еще был Thue, который есть просто недетерминированный вариант нормальных алгорифмов Маркова.



Thue, который есть просто недетерминированный вариант нормальных алгорифмов Маркова.
Прикольно, а как реализована недетерминированность?
У Маркова выбирается первое возможное сверху.
я так люблю дефайныПлатонически (то есть любишь, но не пользуешься)?
С чего бы?
А с того, что скобки забыл

он забыл int перед array[6]
Вокруг аргументов макросов. Хинт: из ITERATE(1 << 2) получится 4, 8, а не 4, 5

экстеоретик

там же плюсы одни...
Вышеуказанный - это тот, что в моем посте? Запустил, получается 4, 8. Там вообще-то кроме сложения еще << стоит, а 1 << 2 + 1 дает 8.
а) поставить скобки в макросе;
б) не использовать ITERATE с такими слабыми операторами.
Поскольку я не планировал пользоваться сдвигами при написании, соответственно, проблема не возникла, и решения ее не требовались...
#define ITERATE(x) x, x + 1
#define FOUR(x) ITERATE(x ITERATE(x+2)
#define EIGHT(x) FOUR(x FOUR(x+4)
array[6] = {FOUR(1 ITERATE(5)};
как я понял, ты про другой... забираю слова назад.
а вообще я безусловно согласен что дефайны злы, и скобки надо ставить
он забыл int перед array[6]может там C
Оставить комментарий
ivan84
Подскажите пожалуйста, возможно ли с помощью директивы #define объявить массив констант?Если да, то приведите текст того как это должно выглядеть на примере массива:
array[6] = {1,2,3,4,5,6};
Заранее спасибо.