-1

拿这个代码

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

     if (func) { // check if NULL
          func(0); // call it
     }
}

有没有办法调用函数指针func而不必写func两次?

就像是

func? (0);
4

1 回答 1

1

你可以写一个宏:

#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);
}
于 2021-07-07T02:56:34.367 回答