winsock 错误多的真爽啊

GDI+ 编译问题 当写一个gdi+的程序时,如果编译的过程中出现一大堆的错误,如: 1>c:\program files\microsoft sdks\windows\v6.0a\include\gdiplusimaging.h(74) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 1>c:\program files\microsoft sdks\w 阅读详情
Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误。诸如:

c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(460) : 参见“AF_IPX”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(131): warning C4005: “AF_MAX”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(479) : 参见“AF_MAX”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(168): warning C4005: “SO_DONTLINGER”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(402) : 参见“SO_DONTLINGER”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(212): error C2011: “sockaddr”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(485) : 参见“sockaddr”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C2059: 语法错误:“常量”
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C3805: “常量”: 意外标记,应输入“}”或者“,”
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(524): warning C4005: “IN_CLASSA”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(287) : 参见“IN_CLASSA”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(530): warning C4005: “IN_CLASSB”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(293) : 参见“IN_CLASSB”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(536): warning C4005: “IN_CLASSC”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(299) : 参见“IN_CLASSC”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(547): warning C4005: “INADDR_ANY”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(304) : 参见“INADDR_ANY”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(549): warning C4005: “INADDR_BROADCAST”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(306) : 参见“INADDR_BROADCAST”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(583): error C2011: “sockaddr_in”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(312) : 参见“sockaddr_in”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(132): error C2011: “fd_set”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(68) : 参见“fd_set”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(167): warning C4005: “FD_SET”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(102) : 参见“FD_SET”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(176): error C2011: “timeval”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(111) : 参见“timeval”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(232): error C2011: “hostent”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(167) : 参见“hostent”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(245): error C2011: “netent”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(180) : 参见“netent”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(252): error C2011: “servent”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(187) : 参见“servent”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(264): error C2011: “protoent”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(199) : 参见“protoent”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(360): error C2011: “WSAData”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(322) : 参见“WSAData”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(458): error C2011: “sockproto”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(494) : 参见“sockproto”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(500): error C2011: “linger”:“struct”类型重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(531) : 参见“linger”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(513): warning C4005: “SOMAXCONN”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(544) : 参见“SOMAXCONN”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(542): warning C4005: “FD_READ”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(562) : 参见“FD_READ”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(545): warning C4005: “FD_WRITE”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(563) : 参见“FD_WRITE”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(548): warning C4005: “FD_OOB”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(564) : 参见“FD_OOB”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(551): warning C4005: “FD_ACCEPT”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(565) : 参见“FD_ACCEPT”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(554): warning C4005: “FD_CONNECT”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(566) : 参见“FD_CONNECT”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(557): warning C4005: “FD_CLOSE”: 宏重定义
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(567) : 参见“FD_CLOSE”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1578): error C2375: “accept”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(742) : 参见“accept”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1600): error C2375: “bind”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(747) : 参见“bind”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1619): error C2375: “closesocket”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(752) : 参见“closesocket”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1638): error C2375: “connect”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(754) : 参见“connect”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1659): error C2375: “ioctlsocket”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(759) : 参见“ioctlsocket”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1680): error C2375: “getpeername”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(764) : 参见“getpeername”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1701): error C2375: “getsockname”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(769) : 参见“getsockname”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1724): error C2375: “getsockopt”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(774) : 参见“getsockopt”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1745): error C2375: “htonl”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(781) : 参见“htonl”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1762): error C2375: “htons”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(783) : 参见“htons”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1780): error C2375: “inet_addr”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(785) : 参见“inet_addr”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1797): error C2375: “inet_ntoa”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(787) : 参见“inet_ntoa”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1815): error C2375: “listen”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(789) : 参见“listen”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1833): error C2375: “ntohl”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(793) : 参见“ntohl”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1850): error C2375: “ntohs”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(795) : 参见“ntohs”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1870): error C2375: “recv”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(797) : 参见“recv”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1895): error C2375: “recvfrom”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(803) : 参见“recvfrom”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1921): error C2375: “select”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(811) : 参见“select”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1945): error C2375: “send”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(818) : 参见“send”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1970): error C2375: “sendto”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(824) : 参见“sendto”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(1996): error C2375: “setsockopt”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(832) : 参见“setsockopt”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2018): error C2375: “shutdown”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(839) : 参见“shutdown”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2039): error C2375: “socket”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(843) : 参见“socket”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2063): error C2375: “gethostbyaddr”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(850) : 参见“gethostbyaddr”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2083): error C2375: “gethostbyname”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(855) : 参见“gethostbyname”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2101): error C2375: “gethostname”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(857) : 参见“gethostname”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2121): error C2375: “getservbyport”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(861) : 参见“getservbyport”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2141): error C2375: “getservbyname”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(865) : 参见“getservbyname”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2160): error C2375: “getprotobynumber”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(869) : 参见“getprotobynumber”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2178): error C2375: “getprotobyname”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(871) : 参见“getprotobyname”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2200): error C2375: “WSAStartup”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(875) : 参见“WSAStartup”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2219): error C2375: “WSACleanup”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(879) : 参见“WSACleanup”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2236): error C2375: “WSASetLastError”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(881) : 参见“WSASetLastError”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2253): error C2375: “WSAGetLastError”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(883) : 参见“WSAGetLastError”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2270): error C2375: “WSAIsBlocking”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(885) : 参见“WSAIsBlocking”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2287): error C2375: “WSAUnhookBlockingHook”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(887) : 参见“WSAUnhookBlockingHook”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2304): error C2375: “WSASetBlockingHook”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(889) : 参见“WSASetBlockingHook”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2321): error C2375: “WSACancelBlockingCall”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(891) : 参见“WSACancelBlockingCall”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2343): error C2375: “WSAAsyncGetServByName”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(893) : 参见“WSAAsyncGetServByName”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2370): error C2375: “WSAAsyncGetServByPort”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(901) : 参见“WSAAsyncGetServByPort”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2396): error C2375: “WSAAsyncGetProtoByName”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(909) : 参见“WSAAsyncGetProtoByName”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2421): error C2375: “WSAAsyncGetProtoByNumber”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(916) : 参见“WSAAsyncGetProtoByNumber”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2446): error C2375: “WSAAsyncGetHostByName”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(923) : 参见“WSAAsyncGetHostByName”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2473): error C2375: “WSAAsyncGetHostByAddr”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(930) : 参见“WSAAsyncGetHostByAddr”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2496): error C2375: “WSACancelAsyncRequest”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(939) : 参见“WSACancelAsyncRequest”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h(2517): error C2375: “WSAAsyncSelect”: 重定义;不同的链接
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(941) : 参见“WSAAsyncSelect”的声明
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(8): error C2079: “wsaData”使用未定义的 struct“WSAData”
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(12): error C2440: “初始化”: 无法从“SOCKET (__stdcall *)(int,int,int)”转换为“SOCKET”
1>          没有使该转换得以执行的上下文
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(20): error C2079: “servAddr”使用未定义的 struct“sockaddr_in”
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(21): error C2228: “.sin_family”的左边必须有类/结构/联合
1>          类型是“int”
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(22): error C2228: “.sin_port”的左边必须有类/结构/联合
1>          类型是“int”
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(22): error C3861: “htons”: 找不到标识符
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(24): error C2228: “.sin_addr”的左边必须有类/结构/联合
1>          类型是“int”
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(24): error C2228: “.S_un”的左边必须有类/结构/联合
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(24): error C2228: “.S_addr”的左边必须有类/结构/联合
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(24): error C3861: “inet_addr”: 找不到标识符
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(25): error C2446: “==”: 没有从“int”到“int (__stdcall *)(SOCKET,const sockaddr *,int)”的转换
1>          从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(25): error C2040: “==”:“int (__stdcall *)(SOCKET,const sockaddr *,int)”与“int”的间接寻址级别不同
1>f:\代码\code练习册\clentceshi\clentceshi\client.cpp(33): error C2440: “初始化”: 无法从“int (__stdcall *)(SOCKET,char *,int,int)”转换为“int”
1>          没有使该转换得以执行的上下文


要了命了~~~~
一堆的错误委实不爽,但是只要将二者的包含顺序调换一下问题就会解决
事实上一直都用的是Winsock1的,还从来没有用过Winsock2,今天开始使用它,但是出现了一大堆的错误,都是那个C2011和C2375之类的错误。当时就想,是不是2和1发生了冲突了?但是我没有包含过1的头文件啊?!
后来一查,在Windows.h里面发现了这么一段代码:  气死我了
  1. #ifndef _MAC
  2. #include <winperf.h>
  3. #include <winsock.h>
  4. #endif
复制代码
死人了把。。。。下面这样做可以解决
  1. #define WIN32_LEAN_AND_MEAN 
  2. #include <Windows.h>
复制代码
#define WIN32_LEAN_AND_MEAN这条语句,它能够将上面的语句包含winsock.h的语句消减掉。

也可以这样
  1. #ifndef _WINSOCKAPI_           // 没有包含winsock.h
  2. #define _WINSOCKAPI_           // 避免再包含winsock.h
  3.      #ifndef _WINSOCK2API_      // 没有包含winsock2.h
  4.     #define _WINSOCK2API_      // 避免再包含winsock2.h
  5.          #include <winsock2.h>
  6.          #pragma comment(lib, "ws32_2.lib")
  7.     #endif
  8. #endif
复制代码
注意啊  如果先包含了windows.h  那么这条语句就废了。。。。

include语句最前面加上#include <winsock2.h>和#include<windows.h>,世界清静了。

通过软链接方式安装节省C盘空间—以VS2019非系统盘安装为例 通过软链接方式节省C盘空间—以VS2019非系统盘安装为例 1. 官网寻找VS2019老版本: 2. 下载Visual Studio Installer 点击.exe文件,下载完成至安装组件界面: 然后退出! 3. 建立文件夹软链接 3.1 命令: mklink /d "链接需要放置的源路径" "链接指向的目的路径" VS 2019占用的系统盘文件夹路径(以系统盘符 C盘软链接到D盘为例): C:\Program Files (x86)\Microsoft SDKs C:\Program F 阅读详情

相关推荐

MinGW Code Blocks 运行 winsock

MinGW Code Blocks 运行 winsock

gruhgd的博客 797

C++ error C2059: 语法错误:“常数”

环境:Win10, x64, VS2017,NX 记录日期:2020/09/10 错误描述: NX二次开发时,新建了一个头文件 a.hpp,部分代码如下: #include <uf_defs.h> #include <uf_ui_types.h> #include <iostream> //牙形类型 enum class DllExport FORM_TYPE { UNIFIED = 0, METRIC, //出错语句

qq_30722721的博客 1万+

k8s重装1.28.2+calico+踩坑收集+InPlacePodVerticalScaling

它提供了从镜像构建(通过 Dockerfile)、镜像管理(上传、下载、存储等)、容器创建、运行、网络配置(可以为容器分配自定义的网络,如 bridge 网络、host 网络等)到容器编排(通过 Docker Compose 可以简单地编排多个容器的启动和关联关系)等一整套完整的解决方案。它的核心功能是启动和管理容器的生命周期。sudo apt update这个可以经常用,是来更新软件包的,它不下载,所以没风险,但是经常会报错,别问,问就是某种强大的力量,所以用镜像或者代理或者巴拉巴拉。

SsjjsS2019的博客 2549

error C2059: 语法错误:“常量”解决方案

场景添加海康,宇视SDK对接的头文件和库文件,编译出错提示error C2059: 语法错误:“常量”。显示宇视SDK头文件NetDEVSDK.h中宏定义异常typedef enum tagNETDEV_PASSIVEDECODE_CMD{PASSIVE_DEC_PAUSE = 1, /* 被动解码暂停(仅文件流有效) */PASSIVE_DEC_R...

1万+

Quartus II设计程序计数器PC、由PC产生ROM的地址(含仿真)

设计程序计数器PC,正常工作模式下,系统启动,设置PC的初始值,之后每来一个clk,PC的输出值应该增加1;当程序发生跳转时,PC的值应该发生改变,级将跳转的地址值赋进行输出。PC后端连接一个ROM,由PC来产生ROM的地址,仿真进行验证。

m0_73700621的博客 1814

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4407

MFC error LNK 链接错误

做课设,遇到各种错误。 说实话,个人最讨厌链接错误了,真的很难发现。下面给一些链接错误的情况,希望有帮助。 1. error LNK2001: 无法解析的外部符号  bighomeDlg.obj : error LNK2001: 无法解析的外部符号 ((类名): static  (后面跟一个变量名)) Debug/*.exe : fatal error LNK1120: 1

yunfanfighting的专栏 933

ArcGIS Pro中协同区位熵方法在商业选址分析中的应用

本文详细介绍了如何利用ArcGIS Pro中的协同区位熵方法进行科学的商业选址分析。该方法通过量化目标客户与竞争对手在空间上的关联程度,精准识别市场空白区与竞争红海,帮助决策者从“凭感觉”转向“用数据说话”,有效提升选址成功率和投资回报。

weixin_29214559的博客 355

关于sockaddr_in 、WSAData 、sockaddr等未定义的问题

在使用windows socket编程中总是遇到一系列的未定义的问题,我自己也曾遇到这些问题,于是给出解决办法: typedef struct sockaddr_in sockaddr_in; typedef struct WSAData WSAData; typedef struct sockaddr sockaddr; 在文件中像这样重新再定义一次类型,基本问题都可以解决,什么没定义就重定义...

weixin_41360517的博客 5548

STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入

本例程使用STM32G070xx芯片,Flash大小128KB,Flash每页(2048字节)写满后再擦除。操作存储区分为64块,每块32字节,即写满64次擦除一次;标定存储区分为16块,每块128字节,即写满16次擦除一次,每个存储区的块都有各自的头部标记

RaphaelCeo的博客 1535

如何加快香山处理器Chisel->Verilog编译速度

相比使用默认的scala firrtl complier,使用CIRCT能够将香山代码编译到Verilog的速度提高50%左右。在执行make命令时加上MFC=1,例如make verilog MFC=1或make emu MFC=1。在本地从源码编译CIRCT,在编译完成后将circt/bin路径加入PATH中。使用GraalVM免费版作为JVM编译香山比OpenJDK快10%-20%。我们推荐使用GraalVM代替OpenJDK。使用CIRCT编译香山。

专业技术人员的归宿 860

c语言代码错误c2059,error C2059: 语法异常:“常量”

error C2059: 语法错误:“常量”为什么会常量呢?先来看看我的错误出现在哪里,*X509_NAME directoryName;,提示X509_NAME 提示常量。如何找到这个宏定义呢,在WryCrypt.himage1.但是问件中没有包含这个头文件啊?宏定义如下:#define X509_NAME ((LPCSTR) 7)2.发生错误的文件是x509v3.himage如图这个文件中包含...

weixin_39640195的博客 4202

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 370

C语言socket编程中的sockaddr与sockaddr_in

这篇博文讲解得比较清楚,谢谢博主:http://www.cppblog.com/lf426/archive/2008/07/10/55800.html

东方吹雪的专栏 4199

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 3万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Socket套接字编程

1、网络字节序列 2、socket编程接口 listen第二个参数 socket常见ARI sockaddr结构 VS sockaddr_in结构 3、UDP套接字 4、TCP套接字

C_Trip的博客 1244

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Windows下进行Socket编程问题

做Windows网络编程经常遇到下面这种情况: c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsock2.h(112) : error C2011: “fd_set”: “struct”类型重定义 1>        c:\program files\microsoft visual studio 8\

youyicc 2015

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

#include 头文件的顺序导致的编译问题

某日,在调用第三方库的时候遇到了如下问题: 第三方软件商提供了一个头文件,xxx.h,其中使用到了windows的HMODULE类型,但是xxx.h中并没有include wondows.h。 同时,第三方软件上提供了一个demo,其使用到了xxx.h: #include <windows.h> ---line 1 #include <xxx.h> -...

Peace 1602

struct sockaddr_in

struct sockaddr_in 在谈struct sockaddr_in 之前先说一下sockaddr sockaddr所在在头文件#include <sys/socket.h> sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下: struct sockaddr { sa_family_t sin_family;//地址族 char sa_data...

weixin_44744673的博客 6694

C/C++编译错误笔记

问题场景(一):怎样引入.dll.lib 方法一: 这里我将要用的.dll和.lib放在一个文件中 (1)先在资源文件中引入.lib (2)在属性配置中将工作目录改为.lib和.dill所在目录下 方法二: (1)在项目属性中附加库目录 (2)在附加依赖项中添加所用的.lib (3)再将所有要用到的.dll文件添加到运行目录下 ...

BBQ_hxl的博客 620

MSVC编译遇到C2059、C2143、C2059、C2365、C2059等错误的解决方案

c:\program files (x86)\windows kits\10\include\10.0.18362.0\um\msxml.h(1897): error C2365: “abort”: 重定义;D:\jenkins_home\workspace\xxx\xxx\xxx\xxx\xxx\model\xxx.c(291): warning C4090: “函数”: 不同的“const”限定符 [D:\jenkins_home\workspace\xxx\xxx\xxx.vcxproj]

罗伯特祥的博客 1304

C2059 “常量”错误

编程时遇到报错200+,几乎清一色的是C2059 “常量” 代码这里就不贴出来了,报错和代码无关。 检查报错位置发现是原本程序里有的,我从来没改过的一些常量定义。 尝试把在主程序加的函数调用注释掉还是会报错,只是在【输出】主程序下面位置报错消失了。就说明是我新添加的两个类里的问题。 找csdn发现头文件位置可能会导致问题,尝试把自己加的头文件放在最后,还是报错。 放在最前面,成功生成。 老规矩参考文献:winbase.h(14824): error C2059: syntax e

partyanimalw的博客 751

禁止显示状态 错误    C2059    语法错误:“常数”

原因是VS不支持中文造成,解决办法:添加中文支持包或者重建工程按键用英文

一行一生 3613

签名时出错: 未在路径 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin

在运行winform程序时,由于清理解决方案等缘故,出现了下面的情况 解决办法:项目-属性-签名-取消勾选“为ClickOne清单签名” 问题完美解决 转载于:https://www.cnblogs.com/kekelele/p/9225144.html...

weixin_30455661的博客 2071
上一篇: C语言中最常用标准库函数
下一篇: C++多线程实例(_beginThreadex创建多线程)
Tyrion-Lannister
博客等级 码龄17年 821粉丝 168原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值