热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows.h与Winsock2.h包含顺序问题

当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下:1>…\include\ws2def.h(91):warningC4005:AF_IPX:macrored

当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下:

1>…\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition
1>…\include\winsock.h(460) : see previous definition of 'AF_IPX'

[原因分析] 
      主要原因是因为中包含了头文件,由于其版本的不同,导致出现上述的错误。中相关代码如下:
               #ifndef WIN32_LEAN_AND_MEAN
               #include
               #include
               #include
               ........
                #ifndef _MAC
               #include
               #include
               #endif
                .......
               #include
               #endif
               #endif

[解决方案] 
      由以上代码可以看出如果在没有定义WIN32_LEAN_AND_MEAN宏的大前提下Windows.h有可能包含Winsock.h 头文件,而我们要用的头文件为 ,那么Windows.h中的和我们需要的不是一个版本,所以会有以上的错误。

[如何解决]

      很简单,在当前工程(就是编译不过的这个工程)所有include语句最前面加上#include 这样就避免了重复定义头文件的错误。


推荐阅读
author-avatar
我等到你不再等我_129
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有