在WinSock2.h重新定义错误

包括winsock2.h,在一个项目的文件中。

获取许多错误 –
WinSock2.h(109) : error C2011: 'fd_set' : 'struct' type redefinition
与相应的 –
WinSock.h(54) : see declaration of 'fd_set'

我没有看到任何头文件中包含winsock.h。

项目中是否有可能造成这种情况?

编辑
但是,我在另一个文件中使用windows.h:
http://cboard.cprogramming.com/windows-programming/41212-strange-msvc-winsock2-compile-error.html

编辑2
在头上我有:

 #include <winsock2.h> #include <iphlpapi.h> #include "\MyFiles\FileX.h" <-which #include <windows.h> 

我的教育猜测是包含头文件的顺序,即首先包括winsock2.h (在windows.h之前的第一个含义),或者在包含windows.h之前定义WIN32_LEAN_AND_MEAN,这防止了windows.h包含winsock v1。

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

-要么-

 #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <winsock2.h> 

经过一番头痛之后,我确信#include "Winsock2.h"在任何#include "windows.h""#include "Winsock.h" ,这就解决了这个问题。

我检查了递归包括,我发现头文件,其中包括(递归)一些#include "windows.h""#include "Winsock.h"并写入#include "Winsock2.h"在这个文件中,我补充#include "Winsock2.h"作为第一个包含。

只是一个耐心的问题,看一个一个包含并建立这个命令,首先#include "Winsock2.h"然后#include "windows.h"