我真的很惊讶我找不到这个问题已经问过了。我想知道 switch 语句占用多少代码空间,以及使用 const 查找表是否会更有效地满足我的需求。
typedef struct container{
type1 a;
type2 b;
type3 c;
}container;
static container d;
//option A
void foo(int num)
{
void* x;
switch (num)
{
case 1:
x = &d->a;
break;
case 2:
x = &d->b;
break;
case 3:
x = &d->c;
break;
default:
x = NULL;
break;
}
// do something with x
}
// option B
const void* lookup_table[] = {
d.a,
d.b,
d.c,
NULL
};
void foo(int num)
{
void* x = lookup_table[num];
// do something with x
}
switch 语句如何分解为程序集,它在代码空间中会大多少?是否值得使用查找表而不是使用 switch 语句?