c ++循环宏

Łuk*_*Lew 1 c++ macros for-loop

我使用宏来编码这样的展开循环:(愚蠢的例子)

#define foreach_small_prime(p, instr) {   \
  int p;                                  \
  p = 2; instr;                           \
  p = 3; instr;                           \
  p = 5; instr;                           \
  p = 7; instr;                           \
}

foreach_small_prime(pp, cout << pp);

int sum = 0;
foreach_small_prime(pp, {
  sum += pp;
  if (sum >= 10) cout << sum << endl;
});
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,我可能会用于构造:

#define foreach_small_even(ii) for(int ii = 0; ii < 20; ii += 2)

int sum = 0;
foreach_small_even(pp) {
  sum += pp;
  if (sum >= 10) cout << sum << endl;
}
Run Code Online (Sandbox Code Playgroud)

我喜欢这个宏,因为我可以将变量名称作为参数传递.

问题:是否有一种方法可以像第二个宏一样用类似for语法的第一个定义循环?

Mic*_*hne 7

您可以查看Boost 预处理器库.它可以做各种循环的事情.语法不是很好,但我相信它有效.但是,我自己没有用过它.