过去几周我一直在尝试解决这个奇怪的问题,但没有成功。
基本上,我正在尝试通过 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/