Ошибка / конфликт с «заменить» на winsock2.h, исправить? - PullRequest
0 голосов
/ 20 октября 2019

Я делаю простой проект, имитирующий протокол UDP.

Я пытаюсь установить соединение с помощью winsock2.h, так как я использую windows, а также Clion и cygwin.

Как только я добавляю библиотеку winsock2.h, я не могу ее скомпилировать.

Это мой простой код:

#include <stdio.h> 
#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")

int main(int argc , char *argv[])
{
    WSADATA wsa;

    printf("\nInitialising Winsock...");
    if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
    {
        printf("Failed. Error Code : %d",WSAGetLastError());
        return 1;
    }

    printf("Initialised.");

    return 0;
}

И ошибка компиляции:

Изображение: https://imgur.com/ZE4PVJR

[ 50%] Building C object CMakeFiles/PKS_Project.dir/main.c.o

In file included from /usr/include/w32api/winsock2.h:56:0,
from /cygdrive/c/Users/kovac/CLionProjects/PKS_Project/main.c:2:

/usr/include/w32api/psdk_inc/_fd_types.h:100:2: warning: #warning "fd_set 
and associated macros have been defined in sys/types.      This can cause 
runtime problems with W32 sockets" [-Wcpp]
 #warning "fd_set and associated macros have been defined in sys/types.  \
  ^~~~~~~

In file included from 
/cygdrive/c/Users/kovac/CLionProjects/PKS_Project/main.c:2:0:
/usr/include/w32api/winsock2.h:995:34: error: conflicting types for 
'select'
   WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set 
*writefds,fd_set *exceptfds,const PTIMEVAL timeout);
                              ^~~~~~
In file included from /usr/include/sys/types.h:52:0,
             from /usr/include/stdio.h:61,
             from /cygdrive/c/Users/kovac/CLionProjects/PKS_Project/main.c:1:
/usr/include/sys/select.h:62:5: note: previous declaration of 'select' was here

 int select __P ((int __n, fd_set *__readfds, fd_set *__writefds,
     ^~~~~~

make[3]: *** [CMakeFiles/PKS_Project.dir/build.make:63:CMakeFiles/PKS_Project.dir/main.c.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/PKS_Project.dir/all]Error 2
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/PKS_Project.dir/rule]Error 2
make: *** [Makefile:118: PKS_Project] Error 2

Любая помощь будетоценил, так как я пытался искать и ничего не мог найти, и я немного заблудился в этой теме.

Спасибо.

...