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 :

Modifier le caractère constant d'une variable


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Modifier le caractère constant d'une variable
    Bonjour,

    Je dois fournir une valeur constante à une fonction dont le paramètre correspondant n'est aps déclaré comme constant.

    Y a-t-il en C l'équivalent du const_cast de C++, pour éviter d'ennuyeux messages du compilateur ?

    Merci.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par oodini Voir le message
    Je dois fournir une valeur constante à une fonction dont le paramètre correspondant n'est aps déclaré comme constant.
    C'est pas très clair. Tu veux dire qu'un fonction peut modifier une variable via un pointeur et que tu veux quand même lui passer l'adresse d'une variable non modifiable ? Faut pas faire ça. Comportement indéfini.

    Evidemment, un cast peu faire l'affaire, mais il ne résout rien. Il se contente de masquer le problème...

    Peux tu donner un exemple de code ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Tu as effectivement compris ce que je voulais faire.

    Même si cela paraît abscon, il y a une raison : je n'ai pas la main sur la définition de la variable, et je n'ai pas la main sur la définition de la fonction (j'utilise une API).

    MAIS je sais que la fonction ne modifiera pas la variable (utilisée comme opérande d'une multiplication matricielle). Disons que je lui fais confiance...

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par oodini Voir le message
    MAIS je sais que la fonction ne modifiera pas la variable (utilisée comme opérande d'une multiplication matricielle). Disons que je lui fais confiance...
    C'est l'interface de la fonction qui est mal faite alors...

    Du moment que tu sais ce que tu fais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       fonction ((TYPE*)adresse);

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    C'est l'interface de la fonction qui est mal faite alors...
    Nous sommes bien d'accord. :-)

    Du moment que tu sais ce que tu fais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       fonction ((TYPE*)adresse);
    Je savais pour le type, mais il s'agit là d'un qualificateur const.
    J'ai besoin de convertir un const en non const, puis de donner son adresse en paramètre à la fonction.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par oodini Voir le message
    Je savais pour le type, mais il s'agit là d'un qualificateur const.
    J'ai besoin de convertir un const en non const, puis de donner son adresse en paramètre à la fonction.
    C'est très exactement ce que fait l'exemple que j'ai donné
    Rappel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       fonction ((TYPE*)adresse);

Discussions similaires

  1. méthode POST avec les caractères '&' et '+' dans une variable
    Par ayvong dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/07/2008, 20h38
  2. Concaténation d'une constante avec une variable
    Par perlgirl dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2007, 14h07
  3. Réponses: 6
    Dernier message: 24/07/2007, 12h56
  4. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  5. [SQL] Problème d'affichage de caractère spéciaux dans une variable chaîne
    Par Kryptonaute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/08/2006, 08h40

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