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

Réseau C Discussion :

Parse error before "socklen_t" sous NIOS IDE


Sujet :

Réseau C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 12
    Par défaut Parse error before "socklen_t" sous NIOS IDE
    Bonjour,
    je développe une application à l'aide d'un NIOS sous NIOS IDE et j'ai une erreur de compilation que je n'arrive pas à identifier :

    make -s all includes
    Compiling server.c...
    In file included from ../lan/server.c:21:
    ../lan/../probe/probe.h:48: error: parse error before "socklen_t"

    Voici mon fichier .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    /* $Id$ */
     
    #ifndef PROBE_H_
    #define PROBE_H_
     
    #ifdef __GNUC__
    #define PACKED      __attribute__((__packed__))
    #else
    #define PACKED
    #endif
     
     
    /* Paramètres de la sonde */
    #define XMITFRAMES_EN   0
    #define XMITSTATS_EN    0
    #define VERBOSE         0
    #define SENDPERIOD      100  /* Envoi toutes les 0.1 millisecondes */
     
    /**
     *  La tâche MicroC/OS II qui lance la lecture sur le périphérique
     * et envoie les trames et stats par UDP
     */
    void prog_interface_extraction(void *pdata);
     
    /* ces fonctions permettent la reception et l'émission de trame udp de taille supérieur au MTU, soit 1518 octets */
    /* fonctions en cours de développement */
     
     
     
    #define dataUDPframe    1472        /* nombre d'octets pour les données utile  */
     
    /* UDP splitting header*/
    #define UDPH_SIZE       7
     
    struct UDPheader_struct{
        char        ID_UDPframe;
        INT16U      UDPframe_size;
        INT16U      total_packets;
        INT16U      packet_number;
    } PACKED;
     
    struct UDPframe_struct{
        struct UDPheader_struct     UDPheader;
        char                        *UDPdata;
    } PACKED;
     
    int sendtoUDP (int s, const void *message, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
     
    #endif
    Et voici la fonction .c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    int 
    sendtoUDP (int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
    {
        int lengthdata_to_send, payload_free;
        int i;
        ssize_t slen;
     
        struct UDPframe_struct  *UDPframe;
        char                    *UDPdata;
     
        /* definition de l'espace disponible pour les données que l'on souhaite transmettre. espace normalement disponible - la taille du header de fragmentation UDP */
        payload_free = dataUDPframe - UDPH_SIZE;
     
        /* allocation de l'espace mémoire pour les données à envoyées par la session UDP */
        UDPframe = (struct UDPframe_struct *)malloc(sizeof(struct UDPheader_struct) + payload_free);
        UDPdata = (char *)&UDPframe->UDPdata;
     
        UDPframe->UDPheader.UDPframe_size = len + UDPH_header;
        UDPframe->UDPheader.ID_UDPframe = msg[11];                              /* On utilise le dernier octet du timestamp de la trame détectée comme ID de fragmentation  */
     
        if(len > payload_free){
            if(len % payload_free == 0){
                UDPframe->UDPheader.total_packets = len / payload_free;             /* len est un multiple du payload */
            }
            else{
                UDPframe->UDPheader.total_packets = 1 + len / payload_free;         /* len n'est pas un multiple du payload */
            }
        }
     
        for (i = 1; i <= UDPframe->UDPheader.total_packets; i ++){
            if(len - (i * payload_free) > payload_free){
                lengthdata_to_send = payload_free;
            }
            else{
                lengthdata_to_send = len - ((i-1) * payload_free);
            }
     
            /* copy des données à envoyées dans la structure de la fragmantation de la trame */
            bcopy(msg + ((i-1) * payload_free), UDPdata, lengthdata_to_send);
     
            /* Ecriture du numéro du packet dans l'en-tête de fragmentation */
            UDPframe->UDPheader.packet_number = i;
     
            /* Envoi du paquet */
            slen=sendto(s, (void *)UDPframe, sizeof(struct UDPheader_struct) + lengthdata_to_send, flags, to, tolen);
     
            return slen;
        }
    }
    Merci pour les éventuelles réponses.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    vérifie les #define avant la définition de socklen_t...

    vérifie alors si tes flags de compil correspondent

Discussions similaires

  1. error: parse error before "FILE"
    Par v4np13 dans le forum C
    Réponses: 4
    Dernier message: 20/12/2006, 18h01
  2. parse error before "__usLgEmissMessage"
    Par moon93 dans le forum C
    Réponses: 4
    Dernier message: 01/08/2006, 16h20
  3. Problème de compilation (parse error before '*' token)
    Par moon93 dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 11/06/2006, 22h39

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