Подтвердить что ты не робот

Ошибки переопределения в WinSock2.h

Включая winsock2.h, в файл проекта.

Получение многих ошибок в

 WinSock2.h(109) : error C2011: 'fd_set' : 'struct' type redefinition
с соответствующим -
 WinSock.h(54) : see declaration of 'fd_set'

Я не вижу winsock.h, который включен в любой из заголовков.

Есть ли какие-либо настройки в проекте, которые могут быть причиной этого?

ИЗМЕНИТЬ
Тем не менее, я использую windows.h в другом файле:
http://cboard.cprogramming.com/windows-programming/41212-strange-msvc-winsock2-compile-error.html

РЕДАКТИРОВАТЬ 2
В заголовке у меня есть:

#include <winsock2.h>  
#include <iphlpapi.h>
#include "\MyFiles\FileX.h" <-which #include <windows.h> 
4b9b3361

Ответ 1

Мое образованное предположение - это порядок включенных заголовков, т.е. сначала включить winsock2.h (с первым значением перед windows.h), или определить WIN32_LEAN_AND_MEAN, прежде чем включать windows.h, что предотвращает включение windows.h из winsock v1.

#include <winsock2.h>
#include <windows.h>

-или -

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>

Ответ 2

После некоторой головной боли: я убедился, что #include "Winsock2.h" находится перед любыми #include "windows.h" и "#include "Winsock.h", и это разрешило случай.

Я проверил рекурсивное включение, я заметил файлы заголовков, которые включают (рекурсивно) некоторые #include "windows.h" и "#include "Winsock.h" и пишут #include "Winsock2.h". в этих файлах я добавил #include "Winsock2.h" в качестве первого include.

Просто терпение, посмотрите, включите один за другим и установите этот порядок, сначала #include "Winsock2.h", затем #include "windows.h"