如何使用“##”定义多个类似的宏?

时间:2013-01-30 09:50:43

标签: c macros

我不知道是否已经有人提出同样的问题,但我无法通过高级搜索找到它[c] [宏]"# #"

我想定义多个宏,如下所示:

#define CHANNEL_0  0
#define CHANNEL_1  1
...
#define CHANNEL_31 31

我可以用这个符号##以简单的方式做到吗?如何? 或者也许有某种方式?

谢谢!

1 个答案:

答案 0 :(得分:3)

我不认为“##”是最好的解决方案。为什么不直接使用 enum ?如果只需要0到31之间的数字,我认为没有理由不能使用它。

enum eChannel {
    Channel0, /* evaluates to 0 */
    Channel1, /* evaluates to 1 */
    ...
    Channel31 /* evaluates to 31 */
};

用法与 #defines

相同
if(channel == Channel1) do_smth();