取此代码
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);
}