c - 如何用 C 语言编写这些循环而不是使用#define?

标签 c

#define loop_x for (int x = 0; x < w; x++)
#define loop_y for (int y = 0; y < h; y++)
#define loop_xy loop_x loop_y

void game(int w, int h)
{
    unsigned univ[h][w];
    loop_xy univ[y][x] = rand() < RAND_MAX;
}

如何在不使用 #define 的情况下重写此代码?

最佳答案

所以你有:

#define loop_x for (int x = 0; x < w; x++)
#define loop_y for (int y = 0; y < h; y++)
#define loop_xy loop_x loop_y

void game(int w, int h)
{
    unsigned univ[h][w];
    loop_xy univ[y][x] = rand() < RAND_MAX;
}

首先将 loop_xy 解析为 loop_x loop_y:

    #define loop_x for (int x = 0; x < w; x++)
    #define loop_y for (int y = 0; y < h; y++)
    #define loop_xy loop_x loop_y

    void game(int w, int h)
    {
        unsigned univ[h][w];
        loop_x loop_y univ[y][x] = rand() < RAND_MAX;
    }

然后解析loop_xloop_y:

    #define loop_x for (int x = 0; x < w; x++)
    #define loop_y for (int y = 0; y < h; y++)
    #define loop_xy loop_x loop_y

    void game(int w, int h)
    {
        unsigned univ[h][w];
        for (int x = 0; x < w; x++) for (int y = 0; y < h; y++) univ[y][x] = rand() < RAND_MAX;
    }

关于c - 如何用 C 语言编写这些循环而不是使用#define?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36936099/

相关文章:

c - 什么是 char c[2] = { [1] = 7 };做?

C语言函数错误

c++ - 在 GMRES 中使用 C 或 C++ 中大型矩阵的矩阵 vector 乘积的更快方法

c - 如何使用动态数组中的值

c - 关于printf(C语言)

c - 如何打印双向链表的内容?

并发原语测试用例

c - 如何接收来自具有相同IP地址的节点的广播?

c - 查看 gprof 输出中的静态调用

c++ - 将 WCHAR 用作 CHAR?