拿这个代码
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);
}