本帖最后由 技术宅 于 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 这样的功能, 实际试验了一下,编译不过。无法根据形参调用对应的宏定义。
请高人指点。
额。我发贴的时候偷懒了。 实际上SEL0 SEL1 SEL2 SEL3 SEL4 都是函数。不是常量。
不过用数组的话倒是可以用函数指针数组来做?
但是那样就不能用宏定义来定义SEL0了。
得用
void SEL0(void)
{
函数内容
}
大神还有什么好方法吗。
一周热门 更多>