【发布时间】:2015-12-10 06:34:09
【问题描述】:
我有一组语句需要在两个不同的循环中执行;根据检查条件的结果标识的循环。这种类型有多个这样的集合。
Set A : statement 1
statement 2
statement 3
Set B : statement 4
statement 5
statement 6
and so on..
现在它们需要执行如下:
if(condition 1)
loop over some Loop A
execute Set A
else if(condition 2)
loop over some loop B
execute Set A
These loops can be completely different from each other.
现在,为了代码清晰起见,我不想写上面提到的代码。另一个原因是我必须制作多组才能将它们组合在一起。
是否有任何机制可以实现以下目标:
CHECK_CONDITION_AND_LOOP_HERE
execute Set A
我已经尝试使用宏来实现这一点,在表达式中使用 braced-group 但不能。我也尝试使用 三元运算符 以及 fall through a switch case 来实现这一点,但无法获得相同的结果。
在 C 语言中有什么方法可以实现我想要的行为吗?
问题的示例代码:
if(condition A)
for(i=0; i<10; i++, k*=2) {
execute Set A; //Operations performed here use variable k
}
else if(condition B)
for(j=5; j<75; j+=5, k*=arr[j]) {
execute Set A; //Operations performed here use variable k
}
【问题讨论】:
-
有条件地确定开始和结束值,然后循环?或者使“执行集A”成为一个功能?或者甚至使循环和“执行集合 A”成为一个函数?有很多方法比宏更好。
-
它不仅仅是基于开始结束值的循环。更新问题以获得更好的清晰度。
-
这些半生不熟的伪代码示例恐怕无法明确您的要求。如果不想复制通用代码,就单独做一个函数,不管是
exec(A)还是exec_A()。您没有说明循环有何不同,但您也可以编写一些类似迭代器的函数并有条件地确定。