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.
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.
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 ?
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...
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);
Nous sommes bien d'accord. :-)
Je savais pour le type, mais il s'agit là d'un qualificateur const.Du moment que tu sais ce que tu fais...
Code : Sélectionner tout - Visualiser dans une fenêtre à part fonction ((TYPE*)adresse);
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);
L'exemple d'Emmanuel suffit.
Le cast en C strippe tout, y compris les qualificateurs const. Voilà pourquoi il est à bannir en C++, qui propose des alternatives plus saines (ici en C, c'est tout ce qu'on a, alors on fait avec).
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.
OK, ben merci aux deux.
Ca répond à mes questions.
Partager