作者:我等到你不再等我_129 | 来源:互联网 | 2024-10-08 18:13
当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: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 这样就避免了重复定义头文件的错误。