c语言FD_SET头文件,E2238 Multiple declaration for ‘fd_set’ 报错

今天编写一个模块,用于使用UDP协议收发报文。编译报错:

[C++ Error] winsock2.h(109): E2238 Multiple declaration for ‘fd_set’

[C++ Error] winsock.h(54): E2344 Earlier declaration of ‘fd_set’

搜索网络,找到类似的问题和如下几种解决方案:

案例和解决方案一

这个错误的解决办法是

在.cpp文件最上面加上#include

案例和解决方案二

[问题描述]

在包含了以及的工程中,编译有时会出现如下错误:

error C2011: ‘fd_set’ : ‘struct’ type redefinition

error C2011: ‘timeval’ : ‘struct’ type redefinition

….

error C2375: ‘accept’ : redefinition; different linkage

[原因分析]

主要原因是因为中包含了头文件,由于其版

本的不同,导致出现上述的错误。中相关代码如下:

#ifndef WIN32_LEAN_AND_MEAN

#include

#include

#include

……..

#ifndef _MAC

#include

#include

#endif

…….

#include

#endif

#endif

[解决方案]

由以上代码可以看出如果在没有定义WIN32_LEAN_AND_MEAN宏的大前

提下windows.h有可能包含winsock.h 头文件,因此我们得出一个很简单

的解决方法就是在包含之前定义WIN32_LEAN_AND_MEAN宏,如

下所示:

#define WIN32_LEAN_AND_MEAN

#include

案例和解决方案三

[问题描述]

winsock2.h编译出错,

[C++ Error] winsock2.h(109): E2238 Multiple declaration for ‘fd_set’

[C++ Error] winsock.h(54): E2344 Earlier declaration of ‘fd_set’

[原因分析]

这种错误肯定是头文件互相引的时候出的错,不过找起来可就费劲了,不过好在有google,找了半天终于查到了

The winsock2.h header file is included by the Indy components and is based on Winsock 2.2. The winsock.h heade

[解决方案]

在你的头文件上加上

#define _WINSOCKAPI_

一切就ok了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值