E2238 Multiple declaration for ‘fd_set’ 报错

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

enter键 发泄超大号解压回车键usb电脑办公键盘程序员解压神器抖音网红Big Enter午睡枕头解压发送键创意礼物
解压神器 网红同款 一键多用 午睡枕头 | 月销量1095件
优惠价19.8元
原价¥39

淘口令:

¥ntfOX9CbZrK¥
 

[C++ Error] winsock2.h(109): E2238 Multiple declaration for ‘fd_set’
[C++ Error] winsock.h(54): E2344 Earlier declaration of ‘fd_set’

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

案例和解决方案一

这个错误的解决办法是

在.cpp文件最上面加上#include <vcl.h>

案例和解决方案二

[问题描述]

在包含了<windows.h>以及<winsock2.h>的工程中,编译有时会出现如下错误:
error C2011: ‘fd_set’ : ‘struct’ type redefinition
error C2011: ‘timeval’ : ‘struct’ type redefinition
….
error C2375: ‘accept’ : redefinition; different linkage

[原因分析]

主要原因是因为<windows.h>中包含了<winsock.h>头文件,由于其版
本的不同,导致出现上述的错误。<windows.h>中相关代码如下:
#ifndef WIN32_LEAN_AND_MEAN
#include <cderr.h>
#include <dde.h>
#include <ddeml.h>
……..
#ifndef _MAC
#include <winperf.h>
#include <winsock.h>
#endif
…….
#include <commdlg.h>
#endif
#endif

[解决方案]

由以上代码可以看出如果在没有定义WIN32_LEAN_AND_MEAN宏的大前
提下windows.h有可能包含winsock.h 头文件,因此我们得出一个很简单
的解决方法就是在包含<windows.h>之前定义WIN32_LEAN_AND_MEAN宏,如
下所示:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

案例和解决方案三

[问题描述]

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了

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发