需要帮助将C宏重写为函数

3 c macros c-preprocessor

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

#define CHECK(id) if(table->cells[id]) isgood[table->cells[id]-1] = 0;
Run Code Online (Sandbox Code Playgroud)

在哪里tablestructisgoodint.

Ree*_*sey 5

直接转换(如果table-> cells [id]为int):

void check(int id, int*isgood) { if (id) isgood[id-1] = 0; }
Run Code Online (Sandbox Code Playgroud)

致电:

check(table->cells[id], isgood);
Run Code Online (Sandbox Code Playgroud)

但是,我会重命名/重做这一点.我特别改名.也没有错误检查 - 即,如果table-> cells [id] == 0,你将尝试设置isgood [-1],这将是不好的.