C - 如果函数指针不为 null,有没有办法在不重复函数指针的情况下调用函数指针?



取此代码

int main() {
void (*func)(int val) = NULL;
if (func) { // check if NULL
func(0); // call it
}
}

有没有一种方法可以调用函数指针func而不必写入func两次?

类似的东西

func? (0);

您可以编写一个宏:

#define CALL_FUNC(func, param) 
do {                         
if (func) func(param);     
} while (0)

并使用它:

int main() {
void (*func)(int val) = NULL;
CALL_FUNC(func, 0);
}

编辑:我不推荐它,我在我的项目中使用了一段时间。事实上,过了一段时间我就放弃了,它增加了一点无用的复杂性。

我终于回到了你当前的代码,但格式为1行:

int main() {
void (*func)(int val) = NULL;
if (func) func(0);
}

最新更新