当我查看 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");
我知道:
- CK_RV 是
unsigned long
的类型定义 - CK_FUNCTION_LIST_PTR_PTR 是类似
**ck_function_list
的类型定义,其中 ck_function_list 是一个结构 - rv 是一个变量
- c_get_function_list 是一个变量
但是如果我拆分第一行并将 typedef 替换为它们的原始值,我会得到如下内容:
unsigned long rv;
unsigned long (*c_get_function_list)(**ck_function_list);
那么,第二行的(**ck_function_list)是什么意思?
提前致谢, 罗伯特
最佳答案
unsigned long (*c_get_function_list)(<param>);
是指向原型(prototype)为的函数的函数指针。
unsigned long func(<param>);
这里的指针是c_get_function_list
关于c - 奇怪的变量类型声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27919872/