【发布时间】:2015-01-13 10:24:35
【问题描述】:
当我查看 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之类的 typedef,其中 ck_function_list 是一个结构体 - rv 是一个变量
- c_get_function_list 是一个变量
但是,如果我拆分第一行并将 typedef 替换为它们的原始值,我会得到类似的结果:
unsigned long rv;
unsigned long (*c_get_function_list)(**ck_function_list);
那么,第二行中的 (**ck_function_list) 是什么意思?
提前致谢, 罗伯特
【问题讨论】:
-
轻微挑剔:我认为
**ck_function_list应该是ck_function_list**。 -
您应该按原样显示
CK_FUNCTION_LIST_PTR_PTR的完整定义。