注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录创意的火花

天天学习,好好向上

 
 
 

日志

 
 

关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法  

2011-12-13 23:38:17|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


 

事实上一直都用的是Winsock1的,还从来没有用过Winsock2,今天开始使用它,但是出现了一大堆的错误,都是那个C2011和C2375之类的错误。当时就想,是不是2和1发生了冲突了?但是我没有包含过1的头文件啊?!
后来一查,在Windows.h里面发现了这么一段代码:


关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#ifndef _MAC
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#include <winperf.h>
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#include <winsock.h>
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#endif

我就一个倒。。。。
原来是这里包含了。。。。
对付这个的终极解决办法是:


关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#define WIN32_LEAN_AND_MEAN
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#include <Windows.h>

即是在包含Windows.h前加入#define WIN32_LEAN_AND_MEAN这条语句,它能够将上面的语句包含winsock.h的语句消减掉。
后面在网上看到另外一种解决方案,其代码如下:


关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#ifndef _WINSOCKAPI_ // 没有包含winsock.h
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#define _WINSOCKAPI_ // 避免再包含winsock.h
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花 #ifndef _WINSOCK2API_ // 没有包含winsock2.h
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花 #define _WINSOCK2API_ // 避免再包含winsock2.h
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花 #include <winsock2.h>
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花 #pragma comment(lib, "ws32_2.lib")
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花 #endif
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花#endif
关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法 - tolle idee! - 记录创意的火花
其实这个代码是有缺陷的,如果是先包含的windows.h,然后再包含这段语句的,事实上,这个语句什么事情都没有做,是一条废语句,要想它有用,就必须在包含windows.h之前包含这段语句所在的头文件。事实上,这个解决方案不是很好的。
使用这个方法,必须要注意的是:必须在包含Windows.h头文件之前使用它,否则很有可能是无效的,当然如果您在包含Windows.h之前使用了#define WIN32_LEAN_AND_MEAN,那么,自然它还是有效的了。这是治标不治本的一个办法。

  评论这张
 
阅读(1391)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017