每次都能被各种错给弄抓狂=-=,真是受不了。。索性来个集锦吧。
1、Error:No viable conversion from '__bind<int &, sockaddr *, unsigned long>' to 'int'
源码:
int localSocket,remoteSocket;
struct sockaddr_in localAddr;
int result = bind(localSocket, (struct sockaddr *)&localAddr,sizeof(localAddr));
分析:
觉得应该没什么错才对的嘛,函数的各个类型也都完全符合,觉得非常纠结,遂上网一查,发现是因为运用了using namespace std;来强制运用了标准库里面的名字空间,而在标准名字空间里也有一个函数叫bind(),所以就被先匹配了,而我想用的sys/socket里的bind()没有被匹配到。
解决方案:
将bind函数声明到全局域,即作以下更改:
int result = ::bind(localSocket, (struct sockaddr *)&localAddr,sizeof(localAddr));