C 奇怪的变量类型声明
当我查看opensc的源代码,特别是libpkcs11.c文件时,我发现一个类型声明与一个函数调用相结合,我只是不明白:C 奇怪的变量类型声明,c,variable-declaration,C,Variable 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"); 我知道: CK_RV是无符号长字符的类型
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是无符号长字符的类型定义
- CK_FUNCTION_LIST_PTR_PTR是类似于
的类型定义,其中CK_FUNCTION_LIST是一个结构**CK_FUNCTION_LIST
- rv是一个变量
- c_get_函数_list是一个变量
unsigned long rv;
unsigned long (*c_get_function_list)(**ck_function_list);
那么,第二行中的(**ck\u function\u list)是什么意思
提前感谢,,
Robert无符号长(*c_get_function_list)();
是指向其原型为的函数的函数指针
unsigned long func(<param>);
unsigned long func();
这里的指针是
c\u get\u function\u list
c\u get\u function\u list
是指向函数的指针。分配时,您可以像普通函数调用一样调用指向函数:c\u get\u function\u list(param)
次要挑剔:我认为**ck\u function\u list
应该是ck\u function\u list**
在这里。阅读本文后,您应该显示ck\u function\u list\u PTR\u PTR的完整定义。
unsigned long func(<param>);