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

TMS*_*TMS -2 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

mel*_*ene 10

for (int i = 0; i < 50; ++i) {
  switch(i) {
    case 0:
      return f1();
    ...
Run Code Online (Sandbox Code Playgroud)

可以减少到

return f1();
Run Code Online (Sandbox Code Playgroud)

不需要宏.

  • @melpomene,我不认为我应该更正我的帖子,因为已经有很多关于帖子中的bug的讨论.如果我仍然想要正确地提出这个问题,我最好开始一个新的.这个答案确实简化了代码,因此它被接受了. (2认同)