2013-08-17 4 views
0

я пытался компилировать программу C сокетов в CYGWIN НКУ, но когда я скомпилировать программу клиента он дает мне следующую ошибкуCygwin GCC компиляции ошибка

client.h: In function ‘error’: 
client.h:11:5: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] 
    exit(1); 
    ^
client.h: In function ‘main’: 
client.h:30:9: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] 
     exit(0); 
     ^
client.h:36:5: warning: passing argument 2 of ‘connect’ from incompatible pointer type [enabled by default] 
    if(connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) 
    ^
In file included from client.h:3:0: 
/usr/include/sys/socket.h:28:7: note: expected ‘const struct sockaddr *’ but argument is of type ‘struct sockaddr_in *’ 
    int connect (int, const struct sockaddr *, socklen_t); 
    ^

И когда я пытался скомпилировать программу сервера дает мне следующее сообщение об ошибке

server.h: In function ‘error’: 
server.h:8:5: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] 
    exit(1); 
    ^
server.h: In function ‘main’: 
server.h:18:9: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] 
     exit(1); 
     ^
server.h:23:5: warning: incompatible implicit declaration of built-in function ‘bzero’ [enabled by default] 
    bzero((char *) &serv_addr, sizeof(serv_addr)); 
    ^
server.h:32:64: error: ‘client’ undeclared (first use in this function) 
    newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &client); 
                   ^
server.h:32:64: note: each undeclared identifier is reported only once for each function it appears in 

Так что решение этой

+2

Для начала не помещайте код в файлы заголовков. Просто объявления функций. Файлы .c - это место, где должна выполняться фактическая реализация. Это может быть частью проблемы. Он видит, что «exit()» используется в файле заголовка. Кроме того, покажите минимальный пример (т. Е. Покажите нам свой код) того, что не работает. – selbie

+1

вы можете найти мой код здесь http://stackoverflow.com/questions/17971513/socket-program-in-c-cannot-compile – mega6382

+0

Вы включаете 'stdlib.h'? Затем вы можете видеть, что выход уже объявлен, и вы не должны его снова объявлять. Это функция сборки, которую нельзя переопределять. – hetepeperfan

ответ

0

Ну, проблема в том, что я пытался скомпилировать программу linux в окнах.

3

ошибка в коде клиента, потому что вы передаете указатель на struct sockaddr_in к PARAMET er, который ожидает, что он будет указателем на struct sockaddr. Сообщение об ошибке в основном говорит все. Ошибка в коде сервера, потому что переменная client не объявлена ​​нигде.

Предупреждений вызваны не включая соответствующие заголовочные файлы, содержащие декларации exit (включая stdlib.h) и bzero (включая strings.h). Таким образом, вы получаете неявное объявление, и поскольку компилятор знает эти функции как стандартные встроенные функции, он также упоминает это в предупреждении.

Смежные вопросы