LINUX.ORG.RU

История изменений

Исправление 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
// ...
Но может ну его нафиг?