【发布时间】:2018-09-11 18:59:48
【问题描述】:
我在代码审查中注意到以下代码:
for (int i = 0; i < 50; ++i) {
switch(i) {
case 0:
return f1();
case 1:
return f2();
...
case 49:
return f50();
}
}
我想知道是否有任何优雅的方式,例如使用宏来简化此代码(将其减少到几行):
谢谢。
【问题讨论】:
-
这不会简化为调用
f1()并立即返回而不执行任何其他分支吗? -
看起来像是 XY 问题。最好的方法是使用函数指针表而不是宏
-
你真的有五十个名字像
f1等等的方法吗?为什么不按顺序运行它们?循环的目的是什么? -
正如丹尼尔已经说过的,它将返回 f1() 的结果,并且永远不会循环其他 49 个函数...示例代码是否正确?
-
宏几乎总是是错误的解决方案。
标签: c++ c macros c-preprocessor