Q:When compiling a Win32 network application in VC, you may meet many errors from within winsock2.h:
c:/program files/devstudio/vc98/include/winsock2.h(99) : error C2011: 'fd_set' : 'struct' type redefinition
c:/program files/devstudio/vc98/include/winsock2.h(134) : warning C4005: 'FD_SET' : macro redefinition
c:/program files/devstudio/vc98/include/winsock.h(83) : see previous definition of 'FD_SET'
c:/program files/devstudio/vc98/include/winsock2.h(143) : error C2011: 'timeval' : 'struct' type redefinition
c:/program files/devstudio/vc98/include/winsock2.h(199) : error C2011: 'hostent' : 'struct' type redefinition
c:/program files/devstudio/vc98/include/winsock2.h(212) : error C2011: 'netent' : 'struct' type redefinition
c:/program files/devstudio/vc98/include/winsock2.h(219) : error C2011: 'servent' : 'struct' type redefinitionIt appears that this might happen if you #include both winsock2.h and winsock.h, but generally this is not the case - you may find that you only include one header file(say, winsock2.h) in your source.A:This is because winsock.h is included in windows.h, and windows.h is implicitly included in atlbase.h(for alt project).So winsock2.h must be included before windows.h.Or, you can #define WIN32_LEAN_AND_MEAN before you include windows.h and it will stopwindows.h from including winsock.h. Generally you can do this in StdAfx.h.Also, in winsock2.h:/*
* Pull in WINDOWS.H if necessary
*/
#ifndef _INC_WINDOWS
#include <windows.h>
#endif /* _INC_WINDOWS */So you can bypass this including via #define _INC_WINDOWS if necessary.