Winsock重新定义错误

Winsock redefinition errors

本文关键字:定义 错误 新定义 Winsock      更新时间:2023-10-16

我正在Visual C++2010中编译一个项目,但我在一些Winsock重新定义方面遇到了问题。

首先我得到:

syntax error : identifier 'SOCKADDR_STORAGE'

但是,如果我包括winsock、winsock2或ws2tcpip,我会得到很多这样的错误:

error C2011: 'sockaddr' : 'struct' type redefinition 
error C2011: 'WSAData' : 'struct' type redefinition
error C2011: 'linger' : 'struct' type redefinition

您的问题是,通过包含Windows.h,您也已经包含了winsock.h。在这里,您的问题出现了,因为包括winsock2.hws2tcpip.h将试图重新定义winsock.h 中的一些定义

通过在Windows.h包含之前使用#define WIN32_LEAN_AND_MEAN,可以阻止编译器包含Windows.h 附带的许多额外内容