IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

erreur compilation déclaration implicite de fonctions


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 13
    Points
    13
    Par défaut erreur compilation déclaration implicite de fonctions
    Bonjour,
    Comme dit dans le titre j'ai ces erreurs suivantes a la compilation :

    CC server.c
    Dans le fichier inclus à partir de server.c:11:
    /usr/include/sys/ipc.h:25:3: attention : #warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE"
    server.c: Dans la fonction «main» :
    server.c:90: erreur: storage size of «action1» isn»t known
    server.c:92: attention : déclaration implicite de la fonction « «sigfillset» »
    server.c:94: attention : déclaration implicite de la fonction « «sigaction» »
    server.c:100: erreur: storage size of «action2» isn»t known
    server.c:295: attention : déclaration implicite de la fonction « «kill» »
    make: *** [server.o] Erreur 1


    Voici le code concerné :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <signal.h> // SIGUSR1
    #include <unistd.h> //close
    #include <arpa/inet.h> //inet_addr
    #include <errno.h> // errno
    #include <sys/ipc.h> // shmget
    #include <sys/shm.h> // shmget

    int main() {
    ...
    int SA_RESTART;

    struct sigaction action1 __attribute__((unused));
    action1.sa_handler = gestion_signal_SIGUSR1;
    sigfillset(&action1.sa_mask);
    action1.sa_flags = SA_RESTART;
    if( sigaction(SIGUSR1, &action1, NULL) == -1) {
    fprintf(stderr, "Erreur sigaction() !\n");
    perror("sigaction ");
    exit(EXIT_FAILURE);
    }

    struct sigaction action2 __attribute__((unused));
    action2.sa_handler = gestion_signal_SIGUSR2;
    sigfillset(&action2.sa_mask);
    action2.sa_flags = 0;
    if( sigaction(SIGUSR2, &action2, NULL) == -1) {
    fprintf(stderr, "Erreur sigaction() !\n");
    perror("sigaction ");
    exit(EXIT_FAILURE);
    }

    ...
    }


    Je ne comprend pas pourquoi j'ai des declarations implicite des fonctions sigfillset et sigaction (et kill dailleur) vu que j'ai inclu le header necessaire signal.h . Et je ne comprend pas l'erreur de storage pour mes 2 structures sigactions. C'est la premiere fois que je vois ça normalement la taille d'une structure sigaction ne doit pas etre donné non ??
    merci si vous pouvez m'adier
    cdt
    tom

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    c'est bon j'ai résolu mon probleme en rajoutant la ligne
    #define _XOPEN_SOURCE 500

    cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur compilation:no IMPLICIT type
    Par utilisateur38 dans le forum Fortran
    Réponses: 2
    Dernier message: 23/03/2010, 04h56
  2. Réponses: 1
    Dernier message: 24/04/2009, 19h27
  3. ca fonctionne mais erreur compilation déclaration sub
    Par petitours dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/12/2007, 19h30
  4. [Requête] Erreur compilation (fonctions)
    Par arnaudvoisin dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/12/2007, 17h22
  5. Réponses: 2
    Dernier message: 11/01/2007, 00h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo