我需要一些帮助以一种类型更安全的方式重写以下行并将其重写为一个函数,但是这段代码是在函数内部定义的这一事实让我很难想出一个聪明的方法来做这件事因为显然它会涉及声明多个参数。
#define CHECK(id) if(table->cells[id]) isgood[table->cells[id]-1] = 0;
其中 table
是一个 struct
而 isgood
是一个 int
。
最佳答案
直译(如果table->cells[id]是int):
void check(int id, int*isgood) { if (id) isgood[id-1] = 0; }
调用:
check(table->cells[id], isgood);
但是,我会稍微重命名/修改它。我特别想改名字。也没有错误检查 - 即,如果 table->cells[id]==0,您将尝试设置 isgood[-1],这会很糟糕。
关于c - 需要帮助将 C 宏重写为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/691394/