gpt4 book ai didi

c++ - #include 导致 bind() 函数调用在编译时抛出错误,为什么?

转载 作者:行者123 更新时间:2023-11-27 23:42:14 27 4
gpt4 key购买 nike

<分区>

我以前从未见过这个问题,甚至不确定如何寻找解决这个问题的方法,因为我什至不确定要寻找什么。我有一些代码使用套接字来读/写我的 linux 设备驱动程序。此代码经过测试并按原样工作。

出于线程安全的原因,我想在我的程序中添加一个互斥量,但是一旦我添加 #include <mutex>到我程序的 main.cpp 文件,只有 <sys/socket.h> bind() 行函数在编译时抛出错误...

这是我 #include <mutex> 后导致问题的行并且不改变我的代码中的任何其他内容

if (bind(sock_fd, (struct sockaddr *)&saddr, sizeof(saddr)) < 0)

dp_comm.cpp: In function 'int setup_socket_to_dev(const char*, int*)': dp_comm.cpp:160:64: error: no match for 'operator<' in 'std::bind(_Functor&&, _ArgTypes&& ...) [with _Functor = int&, _ArgTypes = {sockaddr*, unsigned int}, typename std::_Bind_helper<_Functor, _ArgTypes>::type = std::_Bind]((* &((sockaddr*)(& saddr))), (* &20u)) < 0'

我还尝试创建一个 int 并使其等于 bind() 的返回值

int ret_bind = bind(sock_fd, (struct sockaddr *)&saddr, sizeof(saddr));

dp_comm.cpp: In function 'int setup_socket_to_dev(const char*, int*)': dp_comm.cpp:160:71: error: cannot convert 'std::_Bind_helper::type {aka std::_Bind}' to 'int' in initialization

为什么 #include <mutex>导致我的编译器在 bind() 处匹配打电话?

当我 #include <mutex> 时代码将编译的唯一方法是下面的

bind(sock_fd, (struct sockaddr *)&saddr, sizeof(saddr));

这是怎么回事?

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