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

标签 c

当我查看 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/

相关文章:

c++ - C 与 C++ 中的结构标记

c - 在 C 中使用 printf 添加

读取字符的 C 程序应该在换行符处停止,但并没有停止

c - 使用 spi-bitbang 驱动程序

c - 最小的 GCC 构建

c - 段错误处理程序是否应该由应用程序程序员用 C 语言编写?

c - 在 C 中模拟 Linux 命令 tee

c - 重新分配无效的旧大小

c++ - 如果winsock2套接字是非阻塞的,与其关联的SSL对象是否也会表现出非阻塞行为?

c - 对于相同的值,double 中的字节散列是否始终相同?