История изменений
Исправление SZT, (текущая версия) :
Если надо с десятичным, проще уж будет взять внешний препроцессор...
Не, можно конечно сделать лютые костыли на препроцессоре, когда генерим кучу макросов вида
#define NUMSPLIT_0 1, 0x00
#define NUMSPLIT_1 1, 0x01
#define NUMSPLIT_2 1, 0x02
// ...
#define NUMSPLIT_255 1, 0xff
#define NUMSPLIT_256 2, 0x01, 0x00
#define NUMSPLIT_257 2, 0x01, 0x01
#define NUMSPLIT_258 2, 0x01, 0x02
// ...
#define NUMSPLIT_65535 2, 0xff, 0xff
#define NUMSPLIT_65536 3, 0x01, 0x00, 0x01
#define NUMSPLIT_65537 3, 0x01, 0x00, 0x02
// ...
#define FUNC_CALL2(x) func(NUMSPLIT_##x)
Еще можно
#define NUMSPLIT_0x0 1, 0x00
#define NUMSPLIT_0x00 1, 0x00
#define NUMSPLIT_0x1 1, 0x01
#define NUMSPLIT_0x01 1, 0x01
// ...
Исходная версия SZT, :
Если надо с десятичным, проще уж будет взять внешний препроцессор...
Не, можно конечно сделать лютые костыли на препроцессоре, когда генерим кучу макросов вида
#define NUMSPLIT_0 1, 0x00
#define NUMSPLIT_1 1, 0x01
#define NUMSPLIT_2 1, 0x02
// ...
#define NUMSPLIT_255 1, 0xff
#define NUMSPLIT_256 2, 0x01, 0x00
#define NUMSPLIT_257 2, 0x01, 0x01
#define NUMSPLIT_258 2, 0x01, 0x02
// ...
#define NUMSPLIT_4095 2, 0xff, 0xff
#define NUMSPLIT_4096 3, 0x01, 0x00, 0x01
#define NUMSPLIT_4097 3, 0x01, 0x00, 0x02
// ...
#define FUNC_CALL2(x) func(NUMSPLIT_##x)
Еще можно
#define NUMSPLIT_0x0 1, 0x00
#define NUMSPLIT_0x00 1, 0x00
#define NUMSPLIT_0x1 1, 0x01
#define NUMSPLIT_0x01 1, 0x01
// ...