我有一个给定的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]...
}
这可能吗?如果有,怎么样?或者最好的方法是什么。
这会影响性能吗?
这可能听起来很愚蠢......但我真的有很多这样的个人功能可以做不同的操作。
答案 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);
}
但是代码不好(因为第一次循环无法break
或continue
)