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.