如何使宏在for循环中生成代码?

时间:2018-09-11 18:59:48

标签: c++ c macros c-preprocessor

我在代码审查中注意到以下代码:

for (int i = 0; i < 50; ++i) {
  switch(i) {
    case 0:
      return f1();
    case 1:
      return f2();
    ...
    case 49:
      return f50();
  }
}

我想知道是否有任何优雅的方法,例如使用宏来简化此代码(减少到几行):

谢谢。

1 个答案:

答案 0 :(得分:0)

没有任何CPP宏可以生成此宏,但是在C或C ++中通常的做法是生成带有其他内容的东西。例如,您可以用Python,Ocaml或AWK编写一些生成代码的脚本,而这样做是很常见的做法(您只需在Makefile中添加几行即可)。而且,您还可以使用其他预处理器,例如m4gpp

顺便说一句,在您的情况下,您可以考虑声明一个包含50个指针函数的数组,然后间接调用它们。