Le coup du tableau peut parfaitement se faire sans cast:
double A[4][4];
double * t = &(A[0][0]);
PS: Les parenthèses sont peut-être même inutiles.
Type: Messages; Utilisateur: Médinoc
Le coup du tableau peut parfaitement se faire sans cast:
double A[4][4];
double * t = &(A[0][0]);
PS: Les parenthèses sont peut-être même inutiles.
J'avoue que je ne suis pas sûr. Peut-être le ferais-je par habitude, peut-être que je casterais, ou peut-être que je multiplierais simplement par 1.0 avant.
Pour les pointeurs, par soucis de const-correctness: Quand les warnings sont activés un cast implicite ne peut pas supprimer un "const" sans que le compilo s'en aperçoive. Un cast explicite le peut....
Tant mieux.
Entre entiers et flottants, peut-être, mais c'est le static_cast qui est recommandé.
Entre pointeurs, c'est vraiment déconseillé (et de pointeur à flottant, n'en parlons pas...)
Tu oublies que de toute façon, "On n'utilise pas de cast C-style en C++" non plus. :P
Donc, caster le retour de malloc() est une mauvaise pratique à la fois en C et en C++.:aie:
OK, je comprends la question maintenant. Eh bien, c'est partiellement par idéologie (C et C++ sont des langages différents), et partiellement par paresse (si je décide dès le début que mon prog ne...
Dans ce cas, je ne comprends pas la question. Peux-tu l'expliciter ?
Oui.
Si je veux qu'un code puisse compiler aussi bien en C qu'en C++, je le conçois exprès pour ça et j'utilise pas mal de macros (notamment pour les casts).
Ou plutôt, on met l'accent sur le fait que ce soient deux langages différents. Et ainsi, on peut éviter que quelqu'un fasse un bête copier-coller du code et tente de le compiler sur un compilateur...
Non, l'autre argument est que c'est inutile, et un troisième est que ça a l'avantage de ne pas compiler en C++.
Souviron34 : Comme Emmanuel l'a souvent souligné, il faut lire tout le K&R, y compris les errata.
souviron34: Aucun des cas que tu as décris n'a à voir avec le cast explicite d'un void*.
?
Tu pourrais préciser et mettre un exemple ? J'ai du mal à voir de quoi tu veux parler, et je n'ai pas de gcc sous la main non plus...
En effet, l'erreur décrite par Thierry est généralement due à une combinaison de facteurs (cast + oubli d'inclusion + oubli des warnings).
Mais ce n'est pas si difficile que ça à obtenir: Après...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.