Où est la fonction err_sys() définie?
J'obtiens une erreur liée à la err_sys()
dans ce code:
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
int sockfd;
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
err_sys("can't create socket");
close(sockfd);
return 0;
}
J'obtiens l'erreur de l'éditeur de liens:
/tmp/cciuUVhz.o: In function `main':
getsockopt.c:(.text+0x38): undefined reference to `err_sys'
collect2: ld returned 1 exit status
Où est la fonction err_sys()
défini?
Qu'est-ce que
Jamais entendu parler de
C'est probablement compile parce que les avertissements ne sont pas assez haut, et le C standard vous permet de ne pas avoir de prototypes déclaré pour les fonctions.
ORLY? Je n'utilisez pas le C, donc je ne sais pas. C'est horrible! (Qui me rappelle... je n'ai évidemment dire
En effet! Il est sombre. Voir la accepté de répondre ici, par exemple: stackoverflow.com/questions/2575153/....
err_sys
?Jamais entendu parler de
err_sys
(donc j'ai aucune idée de comment getsockopt.cpp
compile). Utilisation perror
ou strerror
à la place. Aussi, vous avez vraiment besoin pour commencer à accepter des réponses s'il vous plaît. Il n'est pas difficile!C'est probablement compile parce que les avertissements ne sont pas assez haut, et le C standard vous permet de ne pas avoir de prototypes déclaré pour les fonctions.
ORLY? Je n'utilisez pas le C, donc je ne sais pas. C'est horrible! (Qui me rappelle... je n'ai évidemment dire
getsockopt.c
ci-dessus)En effet! Il est sombre. Voir la accepté de répondre ici, par exemple: stackoverflow.com/questions/2575153/....
OriginalL'auteur subhash kumar singh | 2011-08-14
Vous devez vous connecter pour publier un commentaire.
Lieu ce sur le dessus de votre code:
perror est définie dans stdio.h
err_sys est utilisé dans le livre "UNIX Network Programming: Les sockets réseau API" par Richard Stevens. Ce n'est pas quelque chose de commun, pour autant que je sais.
edit:correction d'une erreur de code
Pas de raison particulière, à la fois serait de travailler.
La macro comme l'écrit a des bugs graves, par exemple
if (foo) err_sys(x); else ...
échoue. Si vous ne pouvez pas écrire une macro appropriée, utiliser les fonctions!Il ne compile pas.
Pour l'écrire comme une macro, vous devez
#define err_sys(x) do { perror(x); exit(1); } while (0)
. Cela n'est pas faute de l'if (foo) err_sys(x); else ...
problème. (do { ... } while (0)
) Est une technique standard.OriginalL'auteur Patrik
C'est le protocole TCP/IP Illustré? Je me souviens d'avoir vu et la définition est donnée dans l'annexe:
OriginalL'auteur Foo Bah
err_sys()
est une fonction utilisée dans plusieurs livres écrits par des W. Richard Stevens. Cette fonction est utilisée pour imprimer ce type d'erreur s'est produite.La fonction est utilisée dans les programmes dans les textes avec un fichier d'en-tête
"ourhdr.h"
(ou autre chose). Vérifier l'annexe pour l'en-tête de liste ou la définition de la fonction.OriginalL'auteur Frozen Crayon
La source pour cette fonction (à partir de la Programmation Avancées dans l'Environnement UNIX®, par W. Richard Stevens) peut être trouvé sur le livre du site web: http://www.apuebook.com/.
OriginalL'auteur Annie B
Vous devez spécifier le fichier lib qui contient la mise en œuvre de cette fonction.
C'est un problème lors de la compilation du code c.
OriginalL'auteur michael nesterenko
Télécharger le code source dossier de ce livre, vous trouverez:
http://www.unpbook.com/src.html
D'ouvrir le code source de dossier et de choisir le dossier lib. Ouvrez ensuite le fichier appelé erreur.c. Vous trouverez le sys_err() définie dans la.
OriginalL'auteur Mahmoud Abdel-Rahman
Comme d'autres l'ont dit, ce à quoi ressemble le code des exemples de Stevens: Unix Réseau de Programmation. Si vous avez le livre, regardez dans l'annexe D: divers code source pour le livre de texte définition (ainsi que de l'unp.h en-tête est utilisé de façon omniprésente dans les exemples). Le fichier est trop taper dans une SORTE de réponse, mais une recherche rapide sur internet pour Stevens "standard fonctions d'erreur" renvoie un grand nombre de résultats google recherche de livres avec des implémentations.
OriginalL'auteur Jeremy