当我查看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");
我知道:
unsigned long
**ck_function_list
之类的typedef,其中ck_function_list是结构但如果我拆分第一行并用其原始值替换typedef,我会得到类似的结果:
unsigned long rv;
unsigned long (*c_get_function_list)(**ck_function_list);
那么,第二行中的(** ck_function_list)是什么意思?
提前致谢, 罗伯特
答案 0 :(得分:0)
unsigned long (*c_get_function_list)(<param>);
是一个函数指针,指向原型为的函数。
unsigned long func(<param>);
这里的指针是c_get_function_list
答案 1 :(得分:0)
c_get_function_list
是指向函数的指针。分配后,您可以像正常函数调用一样调用指向函数:c_get_function_list( param )
。