簡體   English   中英

奇怪的變量類型聲明

[英]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的typedef
  • CK_FUNCTION_LIST_PTR_PTR是類似**ck_function_list類的類型**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 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM