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

C Discussion :

error compilation program


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 7
    Points
    7
    Par défaut error compilation program
    voilà le programme complet :
    Code C : 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    #include "socketcan_peak.h"
     
     
    struct ifreq ifr;
     
     
    /**************************************
    *
    * ssyCANSendMsg
    *
    */
    int ssyCANSendMsg(int s,char *sMsg, int nMsgSize, char idsend) 
    {
    TPCANMsg frame;
    int ret,i;
    //printf("j'envoie un message");
     
    frame.ID = idsend;				//identifiant du message
    frame.LEN = nMsgSize;			//taille du message
    strcpy(frame.DATA, sMsg);		//copy sMsg dans frame.data
     
    /*for(i=0; i < sizeof(frame.data);i++)
    {
    printf("sMsg=%X",sMsg[i]);
    }
    printf("\n");*/
    ret = CAN_Write(s, &frame);		//ecrit 
    	if( ret == -1 ) {
    	perror("write");
    			}
    printf("Envoie sMsg=%x %x ident= %x\n",sMsg[0],sMsg[1],idsend);	
    printf("Envoie frame.DATA=%x %x ident= %x\n",frame.DATA[0],frame.DATA[1],idsend);			
    return SSY_DEF_SOCK_OK;
    }
     
    /**************************************
    *
    * ssyCANReceiveMsg
    *
    */
    int ssyCANReceiveMsg (int s, char *sMsg, int nMsgSize,int *ident)
    {
    int ret,i;
    TPCANMsg frame;
    /*
    for(i=0; i < sizeof(frame.data);i++)
    {
    frame.data[i]=0;
    }*/
     
    //printf("je suis dans receive message\n");
     
    ret = CAN_Read(s, &frame);	//lecture du socket
    	if( ret == -1 ) {
    	perror("write");
    			}
     
     
    memcpy(sMsg, &frame.DATA,nMsgSize);		//copie de frame.data dans sMsg
    *ident=frame.ID;			//copie de l'identifiant du message dans ident
    //printf("Reception sMsg=%x %x ident=%x \n",sMsg[0],sMsg[1],&ident);
    //printf("je suis dans receive message3\n");
      return SSY_DEF_SOCK_OK;
    }
     
    /**************************************
    *
    * ssyCreateInetSocket
    *
    */
     
    int ssyCreateInetSocket()
    {
    /*
    int family = PF_CAN, type = SOCK_RAW, proto = CAN_RAW, s;
    struct sockaddr_can addr;
     
     
    	if ((s = socket(family, type, proto)) < 0) {	//création du socket 
    		perror("socket");
    		return 1;
    	}
     
    	addr.can_family = family;			//protocol can
    	strcpy(ifr.ifr_name, "can0");
    	if( ioctl(s, SIOCGIFINDEX, &ifr) ) {
    		perror("ioctl");
    		return 1;
    	}
    	addr.can_ifindex = ifr.ifr_ifindex;
     
    	if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {	//rattachement du protocol can au socket
    		perror("bind");
    		return 1;
    	}
    return (s);*/
    }
    /**************************************
    *
    * ssySocketClose
    *
    */
    int ssySocketClose(int s)
    {
     CAN_Close(s);	//ferme le socket s
    }
     
    /**************************************
    *
    * ssyCANServerOpen
    *
    */
    int ssyCANServerOpen(int *s)
    {
      const char  *szDevNode = DEFAULT_NODE;
     
      *s = LINUX_CAN_Open(szDevNode, O_RDWR); 		//ouvre le socket	
     
      return 0;
    }
     
     
    /**************************************
    *
    * ssyCANClose
    *
    */
    int ssyCANClose(int s)
    {
     
      return(ssySocketClose(s));	//ferme le CAN
    }


    et comme résultat de compilation :

    socketcan_peak.C: In function ‘int ssyCANSendMsg(int, char*, int, char)’:
    socketcan_peak.C:21: error: invalid conversion from ‘__u8*’ to ‘char*’
    socketcan_peak.C:21: error: initializing argument 1 of ‘char* strcpy(char*, const char*)’
    socketcan_peak.C:28: error: invalid conversion from ‘int’ to ‘void*’
    socketcan_peak.C:28: error: initializing argument 1 of ‘__u32 CAN_Write(void*, TPCANMsg*)’
    socketcan_peak.C: In function ‘int ssyCANReceiveMsg(int, char*, int, int*)’:
    socketcan_peak.C:54: error: invalid conversion from ‘int’ to ‘void*’
    socketcan_peak.C:54: error: initializing argument 1 of ‘__u32 CAN_Read(void*, TPCANMsg*)’
    socketcan_peak.C: In function ‘int ssySocketClose(int)’:
    socketcan_peak.C:106: error: invalid conversion from ‘int’ to ‘void*’
    socketcan_peak.C:106: error: initializing argument 1 of ‘__u32 CAN_Close(void*)’
    socketcan_peak.C: In function ‘int ssyCANServerOpen(int*)’:
    socketcan_peak.C:118: error: invalid conversion from ‘void*’ to ‘int’

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben, c'est assez explicite:
    • strcpy() demande un char*, mais tu lui passes l'adresse d'un tableau de __u8 (sans doute unsigned char). Tu dois faire un cast explicite (et vérifier que tu ne débordes pas du tableau; je conseille pour cela la méthode vidage+strncat()).
    • CAN_Write() demande un void* en premier paramètre, et toi, tu lui passes un int.
    • Pareil pour CAN_Read()
    • Et pour CAN_Close()
    • Et dans ta fonction ssyCANServerOpen(), le résultat de LINUX_CAN_Open() est supposé être un void*, toi tu le forces dans un int.

    Je commence à en avoir marre de devoir faire la traduction entre un compilateur et l'utilisateur...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je commence à en avoir marre de devoir faire la traduction entre un compilateur et l'utilisateur...
    surtout que je crois qu'il existe un programme pour cela ( du moins sous linux pour gcc )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    surtout que je crois qu'il existe un programme pour cela ( du moins sous linux pour gcc )
    Un programme pour apprendre à lire ?

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Du moins qui simplifie les messages de gcc ... mais c'est peut être dans un de mes rêves :p
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Du moins qui simplifie les messages de gcc ... mais c'est peut être dans un de mes rêves :p


    simplifier ???

    Le message te dit à quelle ligne et quelle est l'erreur...

    Qu'est-ce que tu veux de plus simple ??
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Oui c'est vrai , je suis un peu idiot , ou alors c'est que il y a deux ans , je peinais encore beaucoup trop. ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Error compiling report java source files
    Par identifia dans le forum Jasper
    Réponses: 17
    Dernier message: 07/07/2014, 15h36
  2. [XL-2007] Error Compilation TRIM
    Par seba_stien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2009, 12h47
  3. Error compilation C#
    Par cdidi dans le forum C#
    Réponses: 1
    Dernier message: 18/03/2009, 14h28
  4. Réponses: 0
    Dernier message: 04/11/2008, 07h41
  5. Error Compilation makefile
    Par remid1985 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 22/10/2006, 20h36

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