奇怪的变量类型声明
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");
我知道:
- 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>);
是一个函数指针,指向一个函数,其原型是。
unsigned long func(<param>);
这里的指针是c_get_function_list
c_get_function_list
是指向函数的指针。分配后,您可以像普通函数调用一样调用指向的函数:c_get_function_list( param )
.
当我查看 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>);
是一个函数指针,指向一个函数,其原型是。
unsigned long func(<param>);
这里的指针是c_get_function_list
c_get_function_list
是指向函数的指针。分配后,您可以像普通函数调用一样调用指向的函数:c_get_function_list( param )
.