想根据参数大小调用不同的宏

时间:2016-04-29 10:43:47

标签: c macros c-preprocessor

我的故事是我想从不同大小的各种整数中组装一个静态字节数组。

因此,我有三个宏

#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()似乎是死路一条。那有什么诀窍吗?

0 个答案:

没有答案