当我查看 C 程序时,我看到一些如下代码:
typedef int (*ibm_ldap_search_s)(LDAP *, char *, int , char *, char * [],int , LDAPMessage **);
这是什么意思?
最佳答案
类似 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;
}
关于c - 我如何理解 typedef int (*ibm_ldap_search_s)(LDAP *, char *, int , char *, char * [],int , LDAPMessage **),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51927166/