winsock编程:关于因为头文件而报错的问题

当在C++项目中,将`#include<windows.h>`置于`#include<winsock2.h>`之前时,会导致编译错误,如FD_SET、timeval和hostent等结构体的重复定义。这是因为`windows.h`会包含`winsock.h`,而`winsock.h`和`winsock2.h`不能同时存在。解决方法是确保`#include<winsock2.h>`在`#include<windows.h>`之前,这样`winsock2.h`的预定义宏会阻止`winsock.h`的加载,避免重复定义问题。`winsock2.h`是`winsock.h`的升级版,支持更多的协议和功能。
摘要由CSDN通过智能技术生成

关于头文件#include<windows.h>放在#include<winsock.h>之前报错的问题。初学者或者没有耐心者可以忽略本小节的笔记。

例如源文件1中:

#include<windows.h>
#include<winsock2.h>
//...
//...

或者例如源文件2中:

#include<winsock.h>
#include<winsock2.h>
//...
//...

编译这两个源文件时,编译出错的内容如下:

definition of 'FD_SET'
...\winsock2.h(143) : error C2011: 'timeval' : 'struct' type redefinition
...\include\winsock2.h(199) : error C2011: 'hostent' : 'struct' type redefinition
...\winsock2.h(212) : error C2011: 'netent' : 'struct' type redefinition
........

报错的意思是所有与这两个头文件包含和socket接口有关的函数以及结构体等都提示这样的错误:redefinition(函数以及结构体等类型重复定义)。

报错的原因

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值