我的故事是我想从不同大小的各种整数中组装一个静态字节数组。
因此,我有三个宏
#define CONV_BYTE(x) (uint8_t)(x)
#define CONV_WORD(x) (uint16_t)(x) & 0xff, (uint16_t)(x) >> 8 & 0xff
#define CONV_LONG(x) (uint32_t)(x) & 0xff, (uint32_t)(x) >> 8 & 0xff, \
(uint32_t)(x) >> 16 & 0xff, (uint32_t)(x) >> 24 & 0xff
它们用作
const uint8_t const _name[] = {CONV_BYTE(byte_arg), CONV_WORD(word_arg), CONV_LONG(long_arg)};
有没有办法让所有长度类型的参数都有一个宏,用参数的大小选择相应的宏?
据我所知,sizeof()似乎是死路一条。那有什么诀窍吗?