我如何理解typedef int(* ibm_ldap_search_s)(LDAP *,char *,int,char *,char * [],int,LDAPMessage **)

时间:2018-08-20 08:50:09

标签: c

当我回顾一个C程序时,我看到了一些类似这样的代码:

typedef int (*ibm_ldap_search_s)(LDAP *, char *, int , char *, char * [],int , LDAPMessage **);

这是什么意思?

1 个答案:

答案 0 :(得分:0)

rettype (* name )( arguments... )之类的构造用于函数指针。

int (* f1 )(void);

f1是一个函数指针,它不带任何参数并返回int。

typedef int (*ibm_ldap_search_s)(LDAP *, char *, int , char *, char * [],int , LDAPMessage **);

ibm_ldap_search_s是别名类型(即typedef)。它别名为带有参数的函数指针:(指向LDAP的指针,指向char的指针,int值,指向char的指针,指向char的指针,int值和指向LDAPMessage的指针)并返回一个int。函数声明中的[]等于*,我的意思是char *[]char **相同。
示例:

typedef int (*ibm_ldap_search_s)(LDAP *, char *, int , char *, char * [],int , LDAPMessage **);

int ibm_ldap_search(LDAP *ldap, char *str1, int value1, 
                    char *str2, char *pointer_to_strings[], 
                    int value2, LDAPMEssages **messages) { 
    return 0; 
}

int main() {
   ibm_ldap_search_s bar = ibm_ldap_search;
   int value = bar(NULL, NULL, 1, NULL, NULL, 2, NULL);
   printf("Function returned $d\n", value);
   return 0;
 }