C++ sendto() 给出 "invalid conversion from ‘int (*)(int, int, int)throw ()’ to ‘int’" 错误
C++ sendto() gives "invalid conversion from ‘int (*)(int, int, int)throw ()’ to ‘int’" error
过去几周我一直在尝试解决这个奇怪的问题,但没有成功。
基本上我正在尝试通过 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
进行编译
编译器认为您在 sendto
的第一个参数中传递了指向 socket
函数的指针,请尝试更改变量名称。
有一个 socket()
函数带有三个 int
参数,
并且编译器认为您想将它作为第一个参数传递给 sendto
。
显然你在某个地方也有一个变量 socket
,"hiding" 套接字函数,但不在这个范围内,所以它采用了函数。停止调用变量socket
,那么会更容易找到(并且在变量已知的部分调用socket
函数也不会那么有问题)...
过去几周我一直在尝试解决这个奇怪的问题,但没有成功。
基本上我正在尝试通过 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
编译器认为您在 sendto
的第一个参数中传递了指向 socket
函数的指针,请尝试更改变量名称。
有一个 socket()
函数带有三个 int
参数,
并且编译器认为您想将它作为第一个参数传递给 sendto
。
显然你在某个地方也有一个变量 socket
,"hiding" 套接字函数,但不在这个范围内,所以它采用了函数。停止调用变量socket
,那么会更容易找到(并且在变量已知的部分调用socket
函数也不会那么有问题)...