当我回顾一个C程序时,我看到了一些类似这样的代码:
typedef int (*ibm_ldap_search_s)(LDAP *, char *, int , char *, char * [],int , LDAPMessage **);
这是什么意思?
答案 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;
}