Bonjour à tou(te)s,
je suis tombé sur un comportement étrange de mon compilateur C (Visual Studio 10) !
J'ai un type tableau d'entier.
J'ai un fonction avec un paramètre de ce type.
Dans la fonction je veux un pointeur sur ce paramètre.
--> pas moyen d'avoir du code sans warning autrement qu'en ajoutant un cast affreux !
Y a-t-il un moyen propre de faire ça ?
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 typedef int foo [5] ; int aze ( foo f ) { // foo * ff = f ; // code qui marche mais avec warning (les niveaux d'indirection de 'foo (*)' et de 'int *' sont différents) // foo * ff = &f ; // code qui semble logique mais avec warning (les niveaux d'indirection de 'foo (*)' et de 'int **' sont différents) et plantage ! foo * ff = (foo*)f ; // obligé d'ajouter ce cast moche et pas très logique pour éviter le warning return (*ff)[0] ; } int main () { foo f = { 654 } ; int x = aze( f ) ; return x ; // tout est ok : x == 654 }
Ici la boule de gomme, à vous les studieux !
PS : oui je sais, ce bout de code ne sert à rien... c'est juste une version ultra simplifiée qui met en évidence mon problème.
Partager