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 :

probleme de "const correctness"


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 35
    Points
    35
    Par défaut probleme de "const correctness"
    Bonjour,

    Voila j'ai un petit probleme de warning avec mon gcc en mode parano à propos de l'utilisation des const pour les tableaux.

    Supposons que j'ai un pseudo code qui ressemble à ca (pour des raisons de clarté, je n'ai mis aucun test d'erreur sur les malloc etc etc)

    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
     
    #include<stdlib.h>
    #include<string.h>
     
    /* renvoie A=A+B */
    void additionVect(double *const tabA, double const *const tabB, const size_t N)
    {
       size_t i=0;
     
       for(i=0;i<N;i++)
           tabA[i]+=tabB[i];
    }
     
    void fonctionasouci(const size_t N)
    {
        size_t i=0;
        double *const tab1 = malloc(N*sizeof(*tab1));
        double *const tab2 = malloc(N*sizeof(*tab2));
     
        memset(tab1,0,N*sizeof(*tab1));
        memset(tab2,3,N*sizeof(*tab1));
     
        additionVect(tab1,tab2,N);
     
        free(tab1);
        free(tab2);
    }

    La ou gcc rale, j'ai un warning comme quoi le type de pointeur utilisé est incompatible pour tab2, ce qui en un sens est logique vu que je lui transmet un pointeur de type double *const et qu'il attend un double const *const
    Je me demandais donc quelle était la solution la plus propre pour résoudre ce probleme.
    Ceci n'empeche pas mon code de tourner certes mais c'est pas pour ca que j'aime qu'il reste des warnings ^^

    Je vous remercie d'avance,
    Bonne journée

    Edit : rajout des #include

  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
    Je ne vois pas le problème de const-correctness dans ce code: Il compile sans problème chez moi du moment que string.h et stdlib.h sont inclus...

    Par contre, memset() n'est pas vraiment conseillé sur autre chose que des char...
    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
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    tout a fait d'accord pour le memset, j'ai voulu trop simplifier l'exemple
    Sinon pour les warning gcc, je vais verifier qu'il ne se drogue pas un peu chez moi, on sait jamais

Discussions similaires

  1. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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