您的位置:首页 > 理论基础 > 计算机网络

error C2011: 'fd_set' : 'struct' type redefinition的错误处理

2014-12-21 19:31 429 查看
error C2011: 'fd_set' : 'struct' type redefinition的错误处理 

前一段时间写一个关于网络的小程序遇到的一个问题:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition

1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(460) : see previous definition of 'AF_IPX'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(127) : warning C4005: 'AF_MAX' : macro redefinition

1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(479) : see previous definition of 'AF_MAX'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(163) : warning C4005: 'SO_DONTLINGER' : macro redefinition

1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(402) : see previous definition of 'SO_DONTLINGER'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(206) : error C2011: 'sockaddr' : 'struct' type redefinition

1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(485) : see declaration of 'sockaddr'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(384) : error C2143: syntax error : missing '}' before 'constant'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(384) : error C2143: syntax error : missing ';' before 'constant'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(384) : error C2059: syntax error : 'constant'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(437) : error C2143: syntax error : missing ';' before '}'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(437) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(437) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(518) : warning C4005: 'IN_CLASSA' : macro redefinition

1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(287) : see previous definition of 'IN_CLASSA'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(524) : warning C4005: 'IN_CLASSB' : macro redefinition

1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(293) : see previous definition of 'IN_CLASSB'

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(530) : warning C4005: 'IN_CLASSC' : macro redefinition

........................................................................................

解决方法:
winsock.h已经包含在windows.h就可以了,引用了winsock2.h文件了就会造成重复定义的错误,不过可以通过在#include <windows.h> 前面定义一个宏,禁止windows.h包含winsock.h 。

例子:#define _WINSOCKAPI_ // 禁止windows.h包含winsock.h
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct 网络 c socket