我想知道,如果有可能,它是否更有效的开关或const表?
例如,什么会表现更好:
switch(input) {
case 0: value = VALUE_0;
break;
case 1: value = VALUE_1;
break;
case 2: value = VALUE_2;
break;
case 3: value = VALUE_3;
break;
case 4: value = VALUE_4;
break;
case 5: value = VALUE_5;
break;
case 6: value = VALUE_6;
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
const uint8_t INPUT_TO_VALUE_TABLE[N_VALUE] = {
VALUE_0,
VALUE_1,
VALUE_2,
VALUE_3,
VALUE_4,
VALUE_5,
VALUE_6,
}
...
...
value = INPUT_TO_VALUE_TABLE[input];
Run Code Online (Sandbox Code Playgroud)
我已经展示了一个虚拟示例,但我还有使用调用不同函数的开关或函数指针表的代码.
代码适用于8位micro(我不知道这个主题是否有任何区别).