gpt4 book ai didi

c - ldap_init 和 ldap_set_option 问题

转载 作者:行者123 更新时间:2023-11-30 17:29:48 26 4
gpt4 key购买 nike

我在使用一些 wldap32.lib 函数时遇到了一些问题。代码

#include "winldap.h"

LDAP Connect;
Connect = *(ldap_init(...));

1) 合法吗?看来是这样,因为我的结构与我使用此代码得到的结构相同

LDAP *pConnect;
Connect = ldap_init(...);

2)下一步

ldap_set_option(&Connect, LDAP_OPT_PROTOCOL_VERSION, (void*)&version));

返回 89 代码。

但是使用

ldap_set_option(pConnect, LDAP_OPT_PROTOCOL_VERSION, (void*)&version));

成功

最佳答案

对于 (1),它是有效的 C,只是不适用于 API。

LDAP winldap.h中暴露的结构只是 LDAP 的用户可观察元素结构。该库完全有权返回一个指向比向用户公开的结构大得多的结构的指针。因此,当您执行结构体赋值时,只有您知道的元素才会被复制,而其余的内存将会丢失。

因此,当您尝试使用这个现已被截断的结构副本时,您会得到 89错误代码。

此外,您无法知道 ldap_init 是否函数失败 - 当失败时它返回 NULL指针,在这种情况下你的程序就会死掉

关于c - ldap_init 和 ldap_set_option 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com