我想知道以下代码中的(*layerSetOpacity)是某种函数指针。我在整个存储库的任何地方都找不到引用!

ilm_client.h中的以下代码是可以理解的,因为ilm_layerSetOpacity与功能有关

ilmErrorTypes ilm_layerSetOpacity(t_ilm_layer layerId, t_ilm_float opacity);

但是在ilm_control_platform.h中找到的这段代码令人困惑,因为带有指针的括号代表什么-函数指针?
 ilmErrorTypes (*layerSetOpacity)(t_ilm_layer layerId,
               t_ilm_float opacity);

我不要求仅代码语法。

最佳答案

让我们进行剖析:-ilmErrorTypes (*layerSetOpacity)(t_ilm_layer layerId, t_ilm_float opacity):-

  • layerSetOpacity是指向将2个参数作为输入
  • 的函数的指针
  • 函数的参数为​​t_ilm_layert_ilm_float类型
  • 函数返回数据类型ilmErrorTypes

  • 您无法在代码库中找到与符号layerSetOpacity匹配的任何事实,这意味着该函数指针已在 header 中声明为,但在该 header 中未声明,但从未使用此函数指针调用,但很可能使用ilm_layerSetOpacity进行了调用

    一个简单的比喻是:
    int a = 10;
    int *p1; //Uninitialized pointer
    int *p2 = &a; //pointer pointing to a
    

    在您的情况下,ailm_layerSetOpacity,而p1layerSetOpacity,而p2不存在
    HTH!

    10-02 05:02