包括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"