Ошибки переопределения Winsock

Я компилирую проект в Visual С++ 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

Ответ 1

Ваша проблема в том, что включив Windows.h, вы также включаете winsock.h. Именно здесь возникает ваша проблема, так как включение winsock2.h или ws2tcpip.h будет пытаться переопределить некоторые определения в winsock.h

Используя #define WIN32_LEAN_AND_MEAN перед включением Windows.h, вы запретите компилятору включать в себя много дополнительного материала, который поставляется с Windows.h