问个宏定义的问题

2019-12-26 18:52发布

本帖最后由 技术宅 于 2017-7-26 11:34 编辑

#define SEL0  1234
#define SEL1  45678
#define SEL2  4557
#define SEL3  214
#define SEL4  998



如上定义了几个宏定义。
正常情况下,我会这么写。

uint32_t GlobalValueBuff;

void assValue(Nbr)
{
        switch(Nbr)
        {
                case 0:
                {
                        GlobalValueBuff = SEL0;
                }break;
                case 1:
                {
                        GlobalValueBuff = SEL1;
                }break;
                case 2:
                {
                        GlobalValueBuff = SEL2;
                }break;
                case 3:
                {
                        GlobalValueBuff = SEL3;
                }break;
                case 4:
                {
                        GlobalValueBuff = SEL4;
                }break;
        }
}

但是如果宏定义多了,几十个,这样很麻烦。 需要写几十个case,太麻烦了而且容易出错。

请问有没有其他的办法进行带参数的宏定义调用对应的宏定义。
如#define VAULE_ASS(X)   SELX  这样的功能, 实际试验了一下,编译不过。无法根据形参调用对应的宏定义。
请高人指点。