【发布时间】:2012-12-03 04:22:25
【问题描述】:
我想简化以下代码:
switch (index)
{
case 1:
output = function1();
break;
case 2:
output = function2();
break;
case 3:
output = function3();
break;
....
其中index 是编译时间常数。
如果我要使用预编译器宏,我需要使用它n 次,其中n 是案例数。如何将上述代码减少到 O(1) 行代码?
【问题讨论】:
-
为什么要这样做并降低代码的可读性?
-
@EdHeal 我希望有一些预编译器的魔力可以使代码更具可读性。类似 output = SOME_MAGICAL_MACRO(function, index)
-
@MartinDrozdik:使用宏不是很 C++-ish。请选择 Ed Heal 的答案。我首先建议检查代码。 (“Jinak se dá předávat 指针/参考 na funkci i jako 参数。Bývá 到 mnohem lepší。”)
-
@Martin 谢谢你的建议。其实我是按照Ed的回答做的。有时,您别无选择,只能使用宏。例如,当您使用非 C++ 风格的库时。
-
@MartinDrozdik 哦,我明白了,那么别无选择:-)
标签: c++ precompile