WINSOCK.H WINSOCK2.H的区别及函数重复定义的解决方法

来源:互联网 发布:淘宝优惠活动时间 编辑:程序博客网 时间:2024/06/05 06:37
1. 版本区别
winsock2.h 版本2.0
winsock.h 版本1.1
说白了就是winsock2.h是winsock.h的升级版,用来替换winsock.h

2. 重复定义

因为是两个不同的版本,因此有非常多相同的定义
解决方法:

1)windows.h在winsock2.h的前面
**该办法影响其他库文件

  1. #define WIN32_LEAN_AND_MEAN //关键
  2.     #include <windows.h>
  3.     #include <winsock2.h>
  4.     #pragma comment(lib,"ws2_32.lib")
2)windows.h在winsock2.h的前面,手动定义_WINSOCKAPI_
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h
  1. #pragma push_macro("_WINSOCKAPI_")
  2. #ifndef _WINSOCKAPI_
  3. #define _WINSOCKAPI_
  4. #endif

  5. #include <windows.h>

  6. #pragma pop_macro("_WINSOCKAPI_")
3)windows.h在winsock2.h的后面
winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h

  1. #include <winsock2.h>
  2.     #include <windows.h>
  3.     #pragma comment(lib,"ws2_32.lib")
0 0
原创粉丝点击