c++ - 相同的代码不同的语法(ilm_client.h vs ilm_control_platform.h)

标签 c++ syntax

我想知道在下面的代码中 (*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):-

  1. layerSetOpacity 是一个指向将 2 个参数作为输入的函数的指针
  2. 函数的输入参数是 t_ilm_layert_ilm_float
  3. 函数返回一个数据类型ilmErrorTypes

事实上,您在代码库中找不到与符号 layerSetOpacity 匹配的任何内容,这意味着函数指针在 header 中声明,但从未调用 使用此函数指针,但很可能使用 ilm_layerSetOpacity

调用

一个更简单的类比是:-

int a = 10;
int *p1; //Uninitialized pointer
int *p2 = &a; //pointer pointing to a

在您的情况下,ailm_layerSetOpacityp1layerSetOpacityp2不存在
HTH!

关于c++ - 相同的代码不同的语法(ilm_client.h vs ilm_control_platform.h),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936070/

相关文章:

c++ - 使用 Visual Studio 创建 C++ DLL

c++ - 零初始化的 std::atomic<T*> 是否保证等同于用 nullptr 初始化的?

c++ - 维护按字母顺序组织的链表

arrays - 使用 JSONPath 计算数组中的实例数

haskell - "@"符号在 Haskell 中引用列表时意味着什么?

c++ - 为什么 ofstream 不以二进制方式在 linux 上写 utf16?

c++ - 在C/C++中检测签名溢出

C++多维数组

c++ - 函数调用运算符重载的参数太多

python - 尝试在 python 中定义多个函数时出现语法错误?