奇怪的变量类型声明

Strange variable type declaration

当我查看 opensc 的源代码时,尤其是 libpkcs11.c 文件,我发现了一个类型声明和一个我不明白的函数调用:

CK_RV rv, (*c_get_function_list)(CK_FUNCTION_LIST_PTR_PTR);
c_get_function_list = (CK_RV (*)(CK_FUNCTION_LIST_PTR_PTR)) sc_dlsym(mod->handle, "C_GetFunctionList");

我知道:

但是如果我拆分第一行并将 typedef 替换为它们的原始值,我会得到如下内容:

unsigned long rv;
unsigned long (*c_get_function_list)(**ck_function_list);

那么,第二行的(**ck_function_list)是什么意思呢?

提前致谢, 罗伯特

unsigned long (*c_get_function_list)(<param>);

是一个函数指针,指向一个函数,其原型是。

unsigned long func(<param>);

这里的指针是c_get_function_list

c_get_function_list 是指向函数的指针。分配后,您可以像普通函数调用一样调用指向的函数:c_get_function_list( param ).