Сообщение Re: Простецкий вопрос от 26.10.2020 10:57
Изменено 26.10.2020 11:08 vopl
Re: Простецкий вопрос
Здравствуйте, TailWind, Вы писали:
TW>Вот есть константы
TW>Каждая на 1 больше другой
TW>Как это автоматизировать?
TW>Не хочется ошибиться вбивая номера
TW>Хочется написать что-то типа = N++;
TW>
TW>Вот есть константы
TW>Каждая на 1 больше другой
TW>Как это автоматизировать?
TW>Не хочется ошибиться вбивая номера
TW>Хочется написать что-то типа = N++;
TW>
TW>static const ULONG Cmd_aaa = 1;
TW>static const ULONG Cmd_bbb = 2;
TW>static const ULONG Cmd_ccc = 3;
TW>static const ULONG Cmd_ddd = 4;
TW>
#include <iostream>
template <int I> struct Cnt {static constexpr int v = Cnt<I-1>::v;};
template <> struct Cnt<0> {static constexpr int v = 0;};
#define NEXT(name) template <> struct Cnt<__LINE__> {static constexpr int v = Cnt<__LINE__-1>::v+1;}; static const int name = Cnt<__LINE__>::v;
NEXT(Cmd_aaa);
NEXT(Cmd_bbb);
NEXT(Cmd_ccc);
NEXT(Cmd_ddd);
int main()
{
std::cout << Cmd_aaa << ", " << Cmd_bbb << ", " << Cmd_ccc << ", " << Cmd_ddd << std::endl;
return 0;
}
Re: Простецкий вопрос
Здравствуйте, TailWind, Вы писали:
TW>Вот есть константы
TW>Каждая на 1 больше другой
TW>Как это автоматизировать?
TW>Не хочется ошибиться вбивая номера
TW>Хочется написать что-то типа = N++;
TW>
добавка: со структурой переборщил, можно сразу значениями оперировать
TW>Вот есть константы
TW>Каждая на 1 больше другой
TW>Как это автоматизировать?
TW>Не хочется ошибиться вбивая номера
TW>Хочется написать что-то типа = N++;
TW>
TW>static const ULONG Cmd_aaa = 1;
TW>static const ULONG Cmd_bbb = 2;
TW>static const ULONG Cmd_ccc = 3;
TW>static const ULONG Cmd_ddd = 4;
TW>
#include <iostream>
template <int I> struct Cnt {static constexpr int v = Cnt<I-1>::v;};
template <> struct Cnt<0> {static constexpr int v = 0;};
#define NEXT(name) template <> struct Cnt<__LINE__> {static constexpr int v = Cnt<__LINE__-1>::v+1;}; static const int name = Cnt<__LINE__>::v;
NEXT(Cmd_aaa);
NEXT(Cmd_bbb);
NEXT(Cmd_ccc);
NEXT(Cmd_ddd);
int main()
{
std::cout << Cmd_aaa << ", " << Cmd_bbb << ", " << Cmd_ccc << ", " << Cmd_ddd << std::endl;
return 0;
}
добавка: со структурой переборщил, можно сразу значениями оперировать
template <int I> constexpr int Cnt = Cnt<I-1>;
template <> constexpr int Cnt<0> = 0;
#define NEXT(name) template <> constexpr int Cnt<__LINE__> = Cnt<__LINE__-1>+1; static const int name = Cnt<__LINE__>;