很多程序比如MFC程序它本身就不是直接包含windows.h,你找不到它的包含位置。也报这个错误。
windows.h和winsock2.h存在有类型重定义,往往体现在VC程序中包含winsock2.h时出现编译错误:
error C2011: “sockaddr_in”:“struct”类型重定义
网友提出的解决办法是将
#include<windows.h>之前 #include <winsock2.h>
这个不是好的解决办法,因为很多程序比如MFC程序它本身就不是直接包含windows.h,你找不到它的包含位置。好的解决办法是添加WIN32_LEAN_AND_MEAN这个预处理器,具体如下图:

测试环境:
64位win10,VS2013
本文针对VC程序中因windows.h与winsock2.h包含顺序不当导致的类型重定义错误,如“sockaddr_in”结构体重复声明的问题,提出了一种有效解决方案。通过添加预处理器指令WIN32_LEAN_AND_MEAN,可以避免此类编译错误,适用于MFC等不直接包含windows.h的程序。测试环境为64位win10,VS2013。

2171

被折叠的 条评论
为什么被折叠?



