我使用宏来编写这样的展开循环:(愚蠢的例子)
#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;
});
但在某些情况下,我可能会使用 for 构造:
#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;
}
我喜欢这个宏,因为我可以将变量名作为参数传递。
问题:有没有办法像第二个宏一样以类似 for 的语法定义第一个循环?