C ++ sendto()给出"从'int(*)(int,int,int)throw()'到'int'"的无效转换。错误

时间:2015-04-17 19:46:38

标签: c++ sockets udp

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

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

以下是给我错误的代码。

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

其中endpointsockaddr_in结构。

编译器抱怨:

  

错误:从'int(*)(int,int,int)throw()'转换为无效   'int'[-fpermissive]

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

我无法想出为什么会发生这种情况的原因。任何想法都会非常感激。

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

进行编译

2 个答案:

答案 0 :(得分:2)

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

显然你在某处也有一个变量socket,"隐藏"套接字函数,但不在此范围内,因此它需要该函数。停止调用变量socket,然后更容易找到(并且在知道变量的部分中调用socket函数也会减少问题)...

答案 1 :(得分:1)

编译器认为您在socket的第一个参数中传递指向sendto函数的指针,尝试更改变量名称。