我需要一些帮助以更安全的方式重写以下行并将其重写为函数,但是这个代码在函数内部定义的事实让我很难想到一个聪明的方法,因为它显然是将涉及宣布几个论点.
#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],这将是不好的.