在C中修改for循环的表示

时间:2014-07-18 09:38:51

标签: c linux representation

我有一个给定的for循环多次写入,每次输入都很烦人。

请注意,它们处于不同的功能中。所以,code optimization isn't这里存在问题。而是representation

for(int j=0; j<PS; j++){
   for (int k=0; k<CLS;k++){

是否有可能在pragma或其他东西的帮助下代表它? 所以,我可以用以下方式使用它。

#pragma mycurrentlooping
{
  blah[j][k]...
}

这可能吗?如果有,怎么样?或者最好的方法是什么。

这会影响性能吗?

这可能听起来很愚蠢......但我真的有很多这样的个人功能可以做不同的操作。

2 个答案:

答案 0 :(得分:3)

您可以使用#define为其定义MACRO,如下所示:

#define loop_till(x) for(int j=0; j<(x); j++)

您可以在源文件的顶部执行此操作,然后将其用作:

loop_till(PS)
{
     loop_till(CLS)
     {
      ...
     }
}

要阅读更多关于(类似功能)预处理器宏的信息,请阅读this

答案 1 :(得分:1)

@DansYouWorryChild为您提供正确的答案,

  

但它可以是一个两级循环吗?你能告诉我一个例子吗?

如果你想要一行宏:

#include <stdio.h>

#define LOOP_outer(var, val) for (var = 0; var < val; var++)
#define LOOP_inner LOOP_outer
#define LOOP(outer, inner) LOOP_##outer LOOP_##inner

int main(void)
{
    int i, j;

    LOOP(outer(i, 5), inner(j, 10)) {
        printf("i = %d, j = %d\n", i, j);
    }
    return 0;
}

扩展为:

 for (i = 0; i < 5; i++) for (j = 0; j < 10; j++) {
  printf("i = %d, j = %d\n", i, j);
 }

但是代码不好(因为第一次循环无法breakcontinue