[問題] gcc在compile時...

看板C_and_CPP (C/C++)作者 (背著蒙古包睡你家)時間16年前 (2009/04/16 23:04), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
我想在fedora 7上寫一個c socket的程式 可是當我 gcc server.c時... server.c: 在函式 「error」 中: server.c:11: 警告:隱含宣告與內建函式 「exit」 不相容 server.c: 在函式 「main」 中: server.c:22: 警告:隱含宣告與內建函式 「exit」 不相容 server.c:27: 警告:隱含宣告與內建函式 「bzero」 不相容 這樣的訊息 代表著gcc套件太舊嗎? 還是程式有問題?? 程式如下... #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> void error(char *msg) { perror(msg); exit(1); } int main(int argc, char *argv[]) { int sockfd, newsockfd, portno, clilen; char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n; if (argc < 2) { fprintf(stderr,"ERROR, no port provided\n"); exit(1); } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); bzero((char *) &serv_addr, sizeof(serv_addr)); portno = atoi(argv[1]); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error("ERROR on binding"); listen(sockfd,5); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error("ERROR on accept"); bzero(buffer,256); n = read(newsockfd,buffer,255); if (n < 0) error("ERROR reading from socket"); printf("Here is the message: %s\n",buffer); n = write(newsockfd,"I got your message",18); if (n < 0) error("ERROR writing to socket"); return 0; } 我到底哪裡出問題?? 怎麼解決?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.229.38.61 ※ 編輯: evilkids 來自: 125.229.38.61 (04/16 23:05)

04/16 23:15, , 1F
你沒有#include <stdlib.h>
04/16 23:15, 1F

04/16 23:15, , 2F
內建函式 「exit」沒記錯的話是在 stdlib.h
04/16 23:15, 2F

04/16 23:21, , 3F
非常感謝~ 只要加<stdlib.h>就好了嗎?
04/16 23:21, 3F

04/17 02:00, , 4F
看需要 像是bzero可能在string.h
04/17 02:00, 4F

04/17 02:00, , 5F
(不熟linux 所以可能你要自己man看看)
04/17 02:00, 5F

04/17 02:01, , 6F
(freebsd的bzero是宣告在string.h)
04/17 02:01, 6F
文章代碼(AID): #19vqaNv8 (C_and_CPP)
文章代碼(AID): #19vqaNv8 (C_and_CPP)