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 :

erreur de compilation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut erreur de compilation
    Bonsoir à tous,
    J'ai une erreur dans mon code dotn jai pas trouvé une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void SetMotCompact(MotCompact *This, char const *sczMot)
    {
    	assert(This!=NULL);
    	This->sczMot = sczMot;
    	This->nbTermes=nbmots(sczMot);
    }
    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
    int nbmots(char lng[])
    {
     
     int i;
     int nb=0;
     int espace=0;
     for(i=0;i<strlen(lng);i++)
     {
         if (lng[i]!=' ' && espace==0)
         {
             nb++;
             espace=1;
         }
     
         if (lng[i]==' ') espace=0;
     
     }
     
        return nb;
    }
    attention : passing argument 1 of ‘nbmots’ discards qualifiers from pointer target type|
    Des idées svp? merci

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Comme le message l'indique, l'appel nbmots(sczMot) ignore le qualificateur const de la cible du pointeur sczMot.

    Avec cette définition de nbmots(), 'instruction This->nbTermes=nbmots(sczMot) pourrait violer le const et modifier la chaine pointée par sczMot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbmots(char const lng[])....

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Le pire, c'est qu'il doit y avoir deux ou trois exemplaires de cette fonction dans le code, et on arrive toujours à en trouver un où il manque le const.
    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.

  4. #4
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Oui , merci
    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
    MotCompact * CreerTableauMotsCompacts(size_t n)
    {
    	MotCompact *pRet = malloc(n*sizeof *pRet);
    	if(pRet!=NULL)
    	{
    		size_t i;
    		for(i=0 ; i<n ; i++)
    		{
    			static const struct st_motCompact defMot = {0, NULL, NULL};
    			pRet[i] = defMot;
    		}
    		assert(i==n);
    	}
    	return pRet;
    }
    Une autre erreur
    |attention : initialization makes integer from pointer without a cast|
    au niveau de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	static const struct st_motCompact defMot = {0, NULL, NULL};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct st_motCompact
    {
    	int nbTermes;
    	int nbLignes;
    	int *pLignes;
    	char const *sczMot;
    };

  5. #5
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Tu tentes d'initialiser un int avec NULL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static const struct st_motCompact defMot = {0, 0, NULL, NULL};
    Ou alors si tu veux initialiser des éléments en particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static const struct st_motCompact defMot =
        { .nbTermes = 0, .pLignes = NULL, .sczMot = NULL};

  6. #6
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut Probleme avec free()
    Merci Pouet
    Là j'ai deux autre erreur : le probleme c'est le compilateur ne reconnait pas la fonction free()
    bizarre non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void DetruireTableauMotsCompacts(MotCompact *pDel)
    {
    	free(pDel);
    }
    attention : implicit declaration of function ‘free’|
    |attention : incompatible implicit declaration of built-in function ‘free’|
    et là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double info_mut_cond(ChainonMot const *pc, ChainonMot const *pc2,TableHachageMot  *t3,MotCompact *pcLeft,MotCompact *pcRight)
    il m'indique
    |erreur: expected ‘)’ before ‘const’|
    Merci d'avance pour l'aide

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Citation Envoyé par Pouet_forever Voir le message
    Ou alors si tu veux initialiser des éléments en particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static const struct st_motCompact defMot =
        { .nbTermes = 0, .pLignes = NULL, .sczMot = NULL};
    Je vous saurais gré d'éviter de lui conseiller des syntaxes spécifiques au C99: Après c'est moi qui doit aider à déboguer, et j'utilise Visual.
    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.

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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