0

我试图在 CYGWIN gcc 中编译一个 C 套接字程序,但是当我编译客户端程序时,它给了我以下错误

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

那么解决这个问题的方法是什么

4

2 回答 2

3

客户端代码中的错误是因为您将指向 a 的指针传递给struct sockaddr_in期望它是指向 a 的指针的参数struct sockaddr。错误消息基本上说明了一切。服务器代码中的错误是因为变量client未在任何地方声明。

exit警告是由于不包含包含(include stdlib.h) 和bzero(include )声明的适当包含文件引起的strings.h。因此,您会得到一个隐式声明,并且由于编译器将这些函数知道为标准内置函数,因此它也在警告中提到了这一点。

于 2013-08-17T16:44:16.410 回答
0

那么问题是我试图在windows中编译linux程序。

于 2013-10-08T08:26:51.133 回答