http://hi.baidu.com/auleaf/item/60aee0407c9420f4dd0f6c69
问题:Win32 网络编程中fd_set类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(109): error C2011: “fd_set” : “struct”类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(144): warning C4005: “FD_SET” : 宏重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(153): error C2011: “timeval” : “struct”类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(209): error C2011: “hostent” : “struct”类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(222): error C2011: “netent” : “struct”类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(229): error C2011: “servent” : “struct”类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h(241): error C2011: “protoent” : “struct”类型重定义
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock2.h
原因分析及解决方案:
头文件被包含了多次,
在默认windows.h会包含winsock.h,当你包含winsock2.h就会冲突,因此在包含windows.h前需要定义一个宏,去除winsock。h包含
#define WIN32_LEAN_AND_MEAN //去除一些不常用的
#include <windows.h>