问一个关于winsock2.h与winsock.h相互冲突的问题,寻高手解决
我用VC++新建了一个空win32程序(名称snc).
此程序属性栏内,我选择编译为 C 代码(/TC)(此点不能更改),
运行库为多线程(/MT),
在主文件snc.c中有" include <winsock2.h> "一句,
但一编译就出现很多错误,即说winsock2.h与winsock.h有很多重复定义的宏,
我仅在snc.c文件中包含了winsock2.h,别的地方没有包含,也没包含winsock.h文件,
程序若更改为编译为c++代码就没有错误发生.
具体错误剪贴部分于下:
========================================================================
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock2.h(109) : error C2011: “fd_set” : “struct”类型重定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock.h(54) : 参见“fd_set”的声明
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock2.h(144) : warning C4005: “FD_SET” : 宏重定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock.h(88) : 参见“FD_SET”的前一个定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock2.h(153) : error C2011: “timeval” : “struct”类型重定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock.h(97) : 参见“timeval”的声明
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock2.h(209) : error C2011: “hostent” : “struct”类型重定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock.h(153) : 参见“hostent”的声明
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock2.h(222) : error C2011: “netent” : “struct”类型重定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock.h(166) : 参见“netent”的声明
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock2.h(229) : error C2011: “servent” : “struct”类型重定义
G:\Visual_Studio_NET_2003\Vc7\PlatformSDK\Include\WinSock.h(173) : 参见“servent”的声明
=============================================================================
我的snc.c文件内容简介如下:
=========================
#include <windows.h>
#include <winsock2.h>
#pragma comment(lib,"WS2_32.lib")
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){
DoSomething();
return 0;
}
==========================