C语言报类型冲重定义的错是怎么回事?
代码如下#include<stdio.h>#include<string.h>#include<stdlib.h>#include<stdint.h>#include<W...
代码如下
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <Windows.h>
#include <errno.h>
#include <WS2tcpip.h>
#include <WinSock2.h>
#include "Practical.h"
#pragma comment(lib,"ws2_32.lib")
SOCKET SetTcpClientSocket(const char *host,const char *service)
{
SOCKET sock=-1;
struct addrinfo addrCriteria;
struct addrinfo *serAddr,*addr;
int rtnVal;
memset(&addrCriteria,0,sizeof(addrCriteria));
addrCriteria.ai_family=AF_UNSPEC;
addrCriteria.ai_socktype=SOCK_STREAM;
addrCriteria.ai_protocol=IPPROTO_TCP;
rtnVal=getaddrinfo(host,service,&addrCriteria,&serAddr);
if (rtnVal!=0)
{
DieWithUserMessage("getaddrinfo() failed",(char *)gai_strerror(rtnVal));
}
for (addr=serAddr;addr!=NULL;addr=addr->ai_next)
{
sock=socket(addr->ai_family,addr->ai_socktype,addr->ai_protocol);
if (sock=INVALID_SOCKET)
{
continue;
}
if (connect(sock,addr->ai_addr,addr->ai_addrlen)==0);
{
break;
}
closesocket(sock);
sock=-1;
}
freeaddrinfo(serAddr);
return sock;
} 展开
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <Windows.h>
#include <errno.h>
#include <WS2tcpip.h>
#include <WinSock2.h>
#include "Practical.h"
#pragma comment(lib,"ws2_32.lib")
SOCKET SetTcpClientSocket(const char *host,const char *service)
{
SOCKET sock=-1;
struct addrinfo addrCriteria;
struct addrinfo *serAddr,*addr;
int rtnVal;
memset(&addrCriteria,0,sizeof(addrCriteria));
addrCriteria.ai_family=AF_UNSPEC;
addrCriteria.ai_socktype=SOCK_STREAM;
addrCriteria.ai_protocol=IPPROTO_TCP;
rtnVal=getaddrinfo(host,service,&addrCriteria,&serAddr);
if (rtnVal!=0)
{
DieWithUserMessage("getaddrinfo() failed",(char *)gai_strerror(rtnVal));
}
for (addr=serAddr;addr!=NULL;addr=addr->ai_next)
{
sock=socket(addr->ai_family,addr->ai_socktype,addr->ai_protocol);
if (sock=INVALID_SOCKET)
{
continue;
}
if (connect(sock,addr->ai_addr,addr->ai_addrlen)==0);
{
break;
}
closesocket(sock);
sock=-1;
}
freeaddrinfo(serAddr);
return sock;
} 展开
2个回答
展开全部
头文件中已经包含了某个文件造成重定义,但是系统头文件不会出现问题,它本身就有防止重定义的机制,就是楼上说的#ifndef ,检查一下是不是自己定义的头文件重复包含了吧
更多追问追答
追问
没有啊,头文件里就这么点代码
#include
#include
void DieWithUserMessage(const char *msg,const char *detail)
{
fputs(msg,stderr);
fputs(": ",stderr);
fputs(detail,stderr);
fputc('\n',stderr);
exit(1);
}
追答
"Practical.h" 文件中包含什么?
这个文件是你自己定义的吗
是不是其中有什么变量定义了,在这个程序段中你又定义了一遍?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询