包含winsock2.h后出现type redefinition错误
2012-07-25 09:08
204 查看
[问题描述]
在包含了<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>
在包含了<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>
相关文章推荐
- VS2010包含windows.h时winsock2.h出现"fd_set":struct类型重定义
- VS2010包含windows.h时winsock2.h出现"fd_set":struct类型重定义错误处理
- VS2010包含windows.h时winsock2.h出现"fd_set":struct类型重定义
- VS2010包含windows.h时winsock2.h出现"fd_set":struct类型重定义
- 使用Qt库时出现winsock2.h和windos.h包含顺序错误
- 包含winsock2.h后出现type redefinition错误
- 包含winsock2.h后出现type redefinition错误
- 使用Qt库时出现winsock2.h和windos.h包含顺序错误
- Nginx控制域名301跳转出现"此网页包含重定向循环"
- 给一个字符串,包含了空格等标点符号,计算出出现次数最多的字母和该字母出现的次数
- 给定包含4300000000个32位整数的顺序文件,如何找出一个出现至少两次的整数
- 最大堆---实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。
- 嵌入式 shell用一行命令统计一文本文件中包含指定字符串出现次数
- windows.h与winsock2.h的包含顺序
- div包含<img/>时,图片下方出现空隙的解决方法
- 关于CMake生成包含PCL库和CGAL库的工程时出现“无法解析的外部符号”的错误
- 关于STM32头文件包含出现No such file or directory和 invalid redeclaration of type name...的问题
- ListView包含EditText RatingBar出现的各种问题
- WCF关于svcutil生成关于绑定出现 元数据包含无法解析的引用的解决方案
- vs2005中编译包含多个项目的解决方案出现的错误