如何在for循环宏中包含多个语句?

时间:2013-09-21 11:49:00

标签: c++ macros

这种for循环宏在竞争性编程中经常使用:

#define REP(i, a, b) \
for (int i = int(a); i <= int(b); i++) 

现在我们按如下方式使用它:

REP(i, a, b)
   statement;

但是,如果我想使用这样的多个语句呢?

REP(i, a, b)
   statement1;
   statement2;

其中两个语句都在循环内。我该如何做到这一点?

2 个答案:

答案 0 :(得分:5)

REP(i, a, b)
{
   statement1;
   statement2;
}

如果这真的是你想要的。但请记住,除了你之外,它会让你的代码更难以阅读。特别是考虑到(i=0; i < n; i++)(i=0; i <= n; i++)更广泛的事实。 如果您的主要目标是避免每次都自己编写这个长建筑,我会在您最喜欢的代码编辑器中看一下片段。

答案 1 :(得分:0)

for(int i = a; i <= b; i++)
{
   statement1;
   statement2;
}

绝对没有理由在这里使用宏 - 它只是隐藏了代码所做的事情,并且可能会破坏事物(例如ab的值不适合int和{{1}} 1}},但案件使他们“适合”。