Автор Тема: можно ли заставить препроцессор посчитать массив констант?  (Прочитано 9069 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lgedmitry

  • Старожил
  • *****
  • Сообщений: 4621
  • Репутация: 30
  • Сергей, Рыбинск
  • Поблагодарили: +701
Есть идея организовать массив констант, в котором каждая последующая составляет 75% от предыдущей.
Можно, конечно, всё вручную забить. Но всё ж, хотелось бы для оперативности отладки программы, задавать вручную только первую из них.
Начал писать вот так: unsigned int const merka[16]={65536*0.75,merka[0]*0.75,merka[1]*0.75...}; - не канает, материцца. Можно ли как-нить сделать? ;-[

Оффлайн xar

  • Старожил
  • *****
  • Сообщений: 5224
  • Репутация: 16
  • Ренат
  • Поблагодарили: +271
как вариант - писать программулину, которая сгенерит заготовку. ну или в экселе и копипаст.

Оффлайн boroda

  • Наш человек
  • ****
  • Сообщений: 475
  • Репутация: 8
  • Александр, Шурик, Борода из города Челябинск
  • Поблагодарили: +180
Хм... ЕМНИП, запись в C# константы выглядит так: const unsigned int merka

Оффлайн xar

  • Старожил
  • *****
  • Сообщений: 5224
  • Репутация: 16
  • Ренат
  • Поблагодарили: +271
кстати да. конст не на месте.

Оффлайн blindman

  • Старожил
  • *****
  • Сообщений: 798
  • Репутация: 13
  • Андрей
  • Поблагодарили: +18
Только такое на ум приходит

#define BASE 65535

#define NEXT_CONST(c) (c * 3 /4)
#define CONST0 BASE
#define CONST1 NEXT_CONST(CONST0)
#define CONST2 NEXT_CONST(CONST1)
#define CONST3 NEXT_CONST(CONST2)
#define CONST4 NEXT_CONST(CONST3)
#define CONST5 NEXT_CONST(CONST4)
#define CONST6 NEXT_CONST(CONST5)
#define CONST7 NEXT_CONST(CONST6)
#define CONST8 NEXT_CONST(CONST7)
#define CONST9 NEXT_CONST(CONST8)
#define CONST10 NEXT_CONST(CONST9)
#define CONST11 NEXT_CONST(CONST10)
#define CONST12 NEXT_CONST(CONST11)
#define CONST13 NEXT_CONST(CONST12)
#define CONST14 NEXT_CONST(CONST13)
#define CONST15 NEXT_CONST(CONST14)

int const unsigned merka[16] = {
    CONST0, CONST1, CONST2, CONST3,
    CONST4, CONST5, CONST6, CONST7,
    CONST8, CONST9, CONST10, CONST11,
    CONST12, CONST13, CONST14, CONST15,
};


Порядок модификаторов в C не имеет значения (в отличии от, например, языка Java)

const int unsigned i = 1;
unsigned int const i = 1;
int const unsigned i = 1;
int unsigned const i = 1;
const unsigned int i = 1;
unsigned const int i = 1;

Оффлайн lgedmitry

  • Старожил
  • *****
  • Сообщений: 4621
  • Репутация: 30
  • Сергей, Рыбинск
  • Поблагодарили: +701
blindman, Андрей, спасибо, на днях попробую. Что-то времени маловато опять стало ???
Порядок модификаторов в C не имеет значения (в отличии от, например, языка Java)
А то я думаю, на порядок у меня никак не материлось ???

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2268 Ответов
1128025 Просмотров
Последний ответ 28 Мая 2020, 13:42:48
от das
18 Ответов
35413 Просмотров
Последний ответ 21 Ноября 2015, 14:09:53
от Звукач
2 Ответов
14285 Просмотров
Последний ответ 02 Февраля 2011, 16:56:41
от Meshin
36 Ответов
56681 Просмотров
Последний ответ 06 Марта 2017, 17:30:53
от Михаил Петрович
2 Ответов
4840 Просмотров
Последний ответ 11 Ноября 2015, 08:53:24
от rubenlukin