gpt4 book ai didi

c++ - 为什么引用的 int 被转换为 void 指针?

转载 作者:行者123 更新时间:2023-11-30 02:38:33 25 4
gpt4 key购买 nike

void Link::keepalive(bool enable){
int opt = enable? 1 : 0;
::setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&opt, sizeof(opt));
}

我经常在一些更底层的 c 函数中看到如下代码,尤其是当它与套接字和网络操作有关时。

我来自 python 背景,我肯定会四处寻找关于 (void *)&opt 正在做什么的很好的解释,但还没有找到一个很好的解释。

我知道引用只是一个有限制的指针。

最佳答案

setsockopt 的签名

int setsockopt(int socket, int level, int option_name,
const void *option_value, socklen_t option_len);

它的倒数第二个参数应该是 void * 类型。要使 &opt 成为 void * 类型,它会被转换为该类型。

另请注意,&optopt 对象的地址。它不是引用。

关于c++ - 为什么引用的 int 被转换为 void 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30734173/

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