C++ sendto() 给出 "invalid conversion from ‘int (*)(int, int, int)throw ()’ 到 ‘int’ "错误

标签 c++ sockets udp

过去几周我一直在尝试解决这个奇怪的问题,但没有成功。

基本上,我正在尝试通过 UDP 向端点发送消息,并且我正在使用 sys/socket.h

下面是给我错误的代码。

sendto(socket, msg.c_str(), msg.size(), 0, (struct sockaddr*) &endpoint, 
       sizeof(endpoint));

endpoint 是一个 sockaddr_in 结构。

编译器提示:

error: invalid conversion from ‘int (*)(int, int, int)throw ()’ to ‘int’ [-fpermissive]

这很有趣,因为该文件是一个小组项目,代码的其他部分使用与上面完全相同的代码,编译器对此很满意。只有当我复制粘贴该行到我在同一个文件中编写的函数时,它才会给我这个错误。

我想不出为什么会发生这种情况。任何想法将不胜感激。

此外,我正在使用 -std=c++0x -Wall -pedantic

进行编译

最佳答案

有一个带有三个int参数的socket()函数,
并且编译器认为您想将它作为第一个参数传递给 sendto

显然你在某处也有一个变量socket,“隐藏”了套接字功能,但不在这个范围内,所以它接受了这个功能。停止调用变量 socket,那么它会更容易找到(并且在变量已知的部分调用 socket 函数也不会那么有问题)...

关于C++ sendto() 给出 "invalid conversion from ‘int (*)(int, int, int)throw ()’ 到 ‘int’ "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708136/

相关文章:

c++ - 应该在 C++ 源代码中修改什么以生成显示函数名称和运算符的控制流图?

c - 在sendmsg和recvmsg(unix套接字)中定义msghdr长度

c - 为什么 recvfrom 在选择过程后返回错误的 IP?

Android 广播超过 3g

c++ - CP210x assigned with/dev/ttyUSB0,如何在C++中知道设备名称?

c++ - 将未初始化的类实例分配给类指针会导致段错误

c++ - 链表中的 pop() 函数实现 (C++)

c++ - 如何获取目标应用程序的 tcp/udp 端口​​列表

sockets - Delphi:TCP打洞

java - DatagramSocket 暂时停止接收数据包(Java)