Ошибки переопределения 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