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.
Version imprimable
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...
Nous sommes bien d'accord. :-)
Je savais pour le type, mais il s'agit là d'un qualificateur const.Citation:
Du moment que tu sais ce que tu fais...
Code:fonction ((TYPE*)adresse);
J'ai besoin de convertir un const en non const, puis de donner son adresse en paramètre à la fonction.
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).
OK, ben merci aux deux.
Ca répond à mes questions.